useCallback は、コールバック関数をメモ化することでコンポーネントを最適化するのに役立つ React フックです。これにより、依存関係が変更されない限り、関数参照がレンダリング間で同じままになることが保証されます。これは、子コンポーネントの useEffect フックの不必要な再レンダリングや再実行を防ぐため、関数を prop として子コンポーネントに渡す場合に特に便利です。
不必要な再レンダリングの防止:
コールバック関数をプロパティとして子コンポーネントに渡すと、その関数はレンダリングのたびに再作成されます。これにより、子コンポーネントが不必要に再レンダリングされる可能性があります。
安定関数参照:
子コンポーネントが useEffect を使用し、コールバック プロパティに依存している場合、不安定な関数参照により useEffect が不必要に再実行されます。
パフォーマンスの最適化:
同じ関数の頻繁な再作成によって引き起こされる高コストの計算や操作を防ぐのに役立ちます。
const memoizedCallback = useCallback( () => { // Your logic here }, [dependencies] // Array of dependencies );
import React, { useState, useEffect } from "react"; const Child = ({ callback }) => { useEffect(() => { callback(); // Runs whenever the `callback` reference changes }, [callback]); return <div>Child Component</div>; }; const Parent = () => { const [count, setCount] = useState(0); const callback = () => { console.log("Callback called"); }; return ( <div> <button onClick={() => setCount(count + 1)}>Increment</button> <Child callback={callback} /> </div> ); }; export default Parent;
import React, { useState, useEffect, useCallback } from "react"; const Child = ({ callback }) => { useEffect(() => { callback(); // Runs only when `callback` changes }, [callback]); return <div>Child Component</div>; }; const Parent = () => { const [count, setCount] = useState(0); const callback = useCallback(() => { console.log("Callback called"); }, []); // Dependencies are empty, so the callback is memoized return ( <div> <button onClick={() => setCount(count + 1)}>Increment</button> <Child callback={callback} /> </div> ); }; export default Parent;
使用しないでください。次の場合にのみ有益です:
以上がReact の useCallback とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。