useCallback 是一個 React Hook,可協助您透過記憶回呼函數來最佳化元件。它確保函數引用在渲染之間保持不變,除非其依賴項發生變化。當您將函數作為 prop 傳遞給子元件時,這特別有用,因為它可以防止子元件的 useEffect 鉤子不必要的重新渲染或重新執行。
防止不必要的重新渲染:
如果將回呼函數作為 prop 傳遞給子元件,則該函數會在每次渲染時重新建立。這可能會導致子元件不必要地重新渲染。
穩定函數參考:
如果子元件使用 useEffect 並依賴回調 prop,不穩定的函數參考將導致 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;
不要不要對每個函數使用useCallback。僅在以下情況下才有用:
以上是React 中的 useCallback 是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!