useCallback
とuseMemo
との主な違いは何ですかuseEffect
?
それぞれをいつ使用するかの例を挙げてください。
ベストアンサー1
簡単な説明。
使用効果
これは、クラス コンポーネント ライフサイクル メソッドcomponentDidMount
、、componentWillUnmount
などの代替手段ですcomponentDidUpdate
。また、依存関係が変更されたときに副作用 (「変数が変更された場合は、これを実行する」など) を作成するために使用することもできます。
コールバックの使用
レンダリングのたびに、関数コンポーネント内にあるものはすべて再度実行されます。子コンポーネントが親コンポーネントの関数に依存している場合、その関数が「変更されない」(参照は変更されるが、関数が行うことは変更されない) 場合でも、親が再レンダリングされるたびに子が再レンダリングされます。
これは、子からの不要なレンダリングを回避し、依存関係が変更される場合のみ関数が参照を変更するようにすることで、最適化するために使用されます。関数が副作用の依存関係である場合 (例 ) に、これを使用する必要がありますuseEffect
。
メモを使う
これはレンダリングごとに実行されますが、キャッシュされた値が使用されます。特定の依存関係が変更された場合にのみ新しい値が使用されます。これは、計算コストが高い場合に最適化のために使用されます。こちらにもそれを説明する良い答えがあります。