Rumah >hujung hadapan web >tutorial js >Apakah useCallback' dalam React?
useCallback ialah React Hook yang membantu anda mengoptimumkan komponen anda dengan menghafal fungsi panggil balik. Ia memastikan bahawa rujukan fungsi kekal sama merentas pemaparan melainkan kebergantungannya berubah. Ini amat berguna apabila anda menghantar fungsi sebagai prop kepada komponen kanak-kanak, kerana ia menghalang pemaparan semula atau pelaksanaan semula cangkuk useEffect komponen kanak-kanak yang tidak perlu.
Halang Re-Render yang Tidak Diperlukan:
Jika anda menghantar fungsi panggil balik sebagai prop kepada komponen kanak-kanak, fungsi itu akan dicipta semula pada setiap pemaparan. Ini boleh menyebabkan komponen kanak-kanak dipaparkan semula secara tidak perlu.
Rujukan Fungsi Stabil:
Jika komponen kanak-kanak menggunakan useEffect dan bergantung pada prop panggil balik, rujukan fungsi yang tidak stabil akan menyebabkan useEffect dijalankan semula tanpa perlu.
Optimumkan Prestasi:
Membantu mengelakkan pengiraan atau operasi yang mahal disebabkan oleh penciptaan semula fungsi yang sama secara kerap.
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;
Jangan jangan gunakan useCallback untuk setiap fungsi. Ia hanya berfaedah jika:
Atas ialah kandungan terperinci Apakah useCallback' dalam React?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!