Rumah > Soal Jawab > teks badan
P粉8348408562023-08-19 00:29:53
Ya, itu betul. Setiap render mencipta fungsi baharu, yang kemudiannya digantikan dengan fungsi cache.
Percepatan bukan kerana melangkau langkah mencipta fungsi, tetapi kerana kod lain dapat melangkau kerja mereka sendiri. Ini kerana jika mereka lulus fungsi yang sama setiap kali, mereka tahu bahawa tiada apa yang relevan telah berubah.
Sebagai contoh, jika anda perlu memasukkan handleChange
传递给useEffect
dalam tatasusunan kebergantungan, adalah penting untuk menghantar rujukan yang stabil setiap kali, jika tidak, kesannya akan dijalankan semula pada setiap paparan:
useEffect(() => { // ... 使用handleChange做一些事情 }, [handleChange]);
Atau jika handleChange
作为prop传递给一个组件,并且该组件想要使用React.memo
langkau pemaparan. Rendering boleh dilangkau hanya apabila prop tidak berubah:
const Parent = () => { const handleChange = useCallback((ev) => { setMsg(ev.target.value); }, []); return <Child handleChange={handleChange}/> } const Child = React.memo(({ handleChange }) => { // ... 使用handleChange做一些事情 })