Hai, hanya karena penasaran, dapatkah useMemo
digunakan alih-alih useRef
ketika melakukannya sebagai berikut:
Contoh:
const ref = useRef(null);
const ref2 = useMemo(() => { current: null }, []);
Bagi saya, kedua ref akan berfungsi dengan baik sebagai referensi DOM dan sebagai nilai yang bisa berubah mirip dengan bidang contoh di kelas. Mengapa useRef
diimplementasikan secara berbeda dibandingkan dengan useMemo
mengingat kode ReactFiberHooks.js untuk useRef
dan useMemo
?
Terima kasih!
Anda dapat membuat objek ref dengan cara ini, tetapi akan kurang efisien karena useMemo
juga melacak dan membandingkan dependensi. (Bahkan jika Anda menentukan larik dependensi kosong, struktur data yang mendasari untuk memo hook memiliki ruang untuk nilai ekstra.)
Untuk menggambarkan ini, Anda dapat membandingkan implementasi useRef
:
https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L907 -L920
Untuk useMemo
:
https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L1126 -L1156
Karena kedua pengait sering digunakan, penting agar keduanya bekerja secara optimal: smile: jadi penerapannya berbeda.
Anda _dapat_ membuat objek ref dengan cara ini, tetapi akan kurang efisien karena
useMemo
juga melacak dan membandingkan dependensi. (Bahkan jika Anda menentukan larik dependensi kosong, struktur data yang mendasari untuk memo hook memiliki ruang untuk nilai ekstra.)Untuk menggambarkan ini, Anda dapat membandingkan implementasi
useRef
:
https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L907 -L920Untuk
useMemo
:
https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L1126 -L1156Karena kedua pengait sering digunakan, penting agar keduanya bekerja secara optimal 😄 agar penerapannya berbeda.
hai, bagaimana cara memformat kode seperti ini?
@ yaofly2012 GitHub memformat tautan seperti itu, jika Anda menautkan ke revisi file dan nomor baris tertentu.
Komentar yang paling membantu
Anda dapat membuat objek ref dengan cara ini, tetapi akan kurang efisien karena
useMemo
juga melacak dan membandingkan dependensi. (Bahkan jika Anda menentukan larik dependensi kosong, struktur data yang mendasari untuk memo hook memiliki ruang untuk nilai ekstra.)Untuk menggambarkan ini, Anda dapat membandingkan implementasi
useRef
:https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L907 -L920
Untuk
useMemo
:https://github.com/facebook/react/blob/434770c3b4b94315c789234c27ed9dc2ec8a78ad/packages/react-reconciler/src/ReactFiberHooks.js#L1126 -L1156
Karena kedua pengait sering digunakan, penting agar keduanya bekerja secara optimal: smile: jadi penerapannya berbeda.