useCallback ist ein React Hook, der Ihnen hilft, Ihre Komponente zu optimieren, indem er sich Callback-Funktionen merkt. Dadurch wird sichergestellt, dass die Funktionsreferenz bei allen Renderings gleich bleibt, sofern sich ihre Abhängigkeiten nicht ändern. Dies ist besonders nützlich, wenn Sie eine Funktion als Requisite an untergeordnete Komponenten übergeben, da dadurch unnötige erneute Renderings oder erneute Ausführungen der useEffect-Hooks der untergeordneten Komponenten verhindert werden.
Unnötiges erneutes Rendern verhindern:
Wenn Sie eine Rückruffunktion als Requisite an eine untergeordnete Komponente übergeben, wird diese Funktion bei jedem Rendern neu erstellt. Dies kann dazu führen, dass untergeordnete Komponenten unnötigerweise neu gerendert werden.
Stabile Funktionsreferenzen:
Wenn eine untergeordnete Komponente useEffect verwendet und von der Callback-Requisite abhängt, führt eine instabile Funktionsreferenz dazu, dass useEffect unnötigerweise erneut ausgeführt wird.
Leistung optimieren:
Hilft, teure Berechnungen oder Vorgänge zu vermeiden, die durch die häufige Neuerstellung derselben Funktion verursacht werden.
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;
Verwenden Sie nicht useCallback für jede Funktion. Es ist nur dann von Vorteil, wenn:
Das obige ist der detaillierte Inhalt vonWas ist „useCallback' in React?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!