タイトルはすでに明示的かつ明確であるため、書き直すことはできません
<p>React Native で Flashlist を使用しており、<code>renderItem</code> 関数で <code>useCallback</code> フックを使用しています。私のコンポーネントには、<code>todos</code> という状態 (配列) があり、<code>todos.length</code> をログに記録すると、初期状態値 0 のみが取得されます。なぜこれが起こっているのでしょうか?どうすれば修正できますか? </p>
<pre class="brush:php;toolbar:false;">デフォルト関数 MyComponent() をエクスポート {
// 簡潔にするために一部のコードが省略されています。
const [todos, setTodos] = useState([]);
const renderItem = useCallback(
({ item }: ListRenderItemInfo<Todo>) => (
<タッチ可能な不透明度
スタイル={{ 高さ: 50 }}
onPress={() => {
console.log(todos.length); // 常に 0 を記録します。
if (todos.length >= 10) return;
setTodos((curr) => [item.name, ...curr]);
}}
>
<Heading color={"black"}>{item.name}</Heading>
</TouchableOpacity>
)、
[]
);
戻る (
<フラッシュリスト<Todo>
data={data?.todos as Todo[]}
推定アイテムサイズ={50}
renderItem={renderItem}
keyExtractor={(_, idx) => idx.toString()}
/>
);
}</pre>
<p>注: <code>todos</code> と <code>todos.length</code> の両方を依存関係として <code>useCallback</code> に渡してみましたが、結果は同じでした。 。 </p>
<p>どんなご質問にも喜んでお答えいたします。 </p>