Der Titel kann nicht umgeschrieben werden, da er bereits eindeutig und klar ist
<p>Ich verwende Flashlist in React Native und verwende den Hook <code>useCallback</code> in meiner Funktion <code>renderItem</code> In meiner Komponente habe ich einen Zustand (ein Array) namens <code>todos</code> und wenn ich <code>todos.length</code> protokolliere, erhalte ich nur den Anfangszustandswert 0. Warum passiert das und wie kann ich es beheben? </p>
<pre class="brush:php;toolbar:false;">export default function MyComponent() {
// Der Kürze halber wurde ein Teil des Codes weggelassen.
const [todos, setTodos] = useState<string[]>([]);
const renderItem = useCallback(
({ item }: ListRenderItemInfo<Todo>) =>
<TouchableOpacity
style={{ height: 50 }}
onPress={() =>
console.log(todos.length); // Immer 0 protokollieren.
if (todos.length >= 10) return;
setTodos((curr) => [item.name, ...curr]);
}}
>
<Heading color={"black"}>{item.name}</Heading>
</TouchableOpacity>
),
[]
);
zurückkehren (
<FlashList<Todo>
data={data?.todos as Todo[]}
geschätzteItemSize={50}
renderItem={renderItem}
keyExtractor={(_, idx) => idx.toString()}
/>
);
}</pre>
<p>Hinweis: Ich habe versucht, sowohl <code>todos</code> als Abhängigkeiten an <code>useCallback</code> zu übergeben . </p>
<p>Bei Fragen stehe ich Ihnen gerne zur Verfügung. </p>