Jalur ke React.useCallback()

Anda pasti sudah sering mendengar bahwa kita harus memoize fungsi callback menggunakan useCallback() untuk mencegah rendering ulang komponen yang tidak berguna.

Tapi apa sebenarnya useCallback() . Pernahkah Anda memikirkannya?

Biarkan saya membantu Anda memahami apa itu dan di mana menggunakannya dengan benar.

Pertama-tama mari kita pahami pemeriksaan persamaan fungsi

Sebelum melihat bagaimana kita menggunakannya, mari kita lihat apa yang dipecahkannya. Mari kita tulis fungsi sederhana yang mengembalikan fungsi:

mul1 dan mul2 adalah fungsi perkalian dua bilangan. Mereka telah dibuat oleh fungsi multiply .

Fungsi dalam JavaScript adalah objek biasa. Fungsi mul1 dan mul2 berbagi kode yang sama tetapi mereka adalah objek fungsi yang berbeda. Membandingkan mereka mengevaluasi ke false .

Begitulah cara kerja objek JavaScript. Sebuah objek (termasuk objek fungsi) sama dengan dirinya sendiri.

Sekarang Tujuan useCallback()

React.useCallback() pada dasarnya memecahkan pemeriksaan persamaan fungsi yang kita lihat di atas. Objek fungsi yang berbeda berbagi kode yang sama sering dibuat di dalam komponen React:

handleClick (fungsi sebaris) adalah objek fungsi yang berbeda pada setiap rendering CustomComponent .

Dan tidak ada salahnya memiliki fungsi yang dideklarasikan sejalan dengan React Components. Itu tidak akan berdampak buruk pada kinerja.

Tetapi dalam beberapa kasus, Anda perlu mempertahankan instance fungsi tunggal di antara rendering:

  1. Seperti ketika fungsi memiliki beberapa keadaan internal, misalnya ketika fungsi di-debounce/throtttle

2. Komponen fungsional yang dibungkus di dalam React.memo()menerima prop objek fungsi.

Jika komponen turunan yang menerima panggilan balik bergantung pada pemeriksaan kesetaraan referensial (misalnya: React.memo() atau shouldComponentUpdate() ) untuk mencegah perenderan ulang yang tidak perlu saat propsnya berubah, maka penting agar setiap props callback tidak berubah antara membuat.

Oleh karena itu dalam komponen induk, kita dapat membungkus prop panggilan balik di useCallback() dan menjamin bahwa itu meneruskan objek fungsi yang sama ke dalam komponen turunan yang dioptimalkan.

3. Ketika objek fungsi adalah ketergantungan pada kait lain, mis useEffect(..., [callback])

Dalam contoh di atas, jika myFunction melakukan sesuatu yang menyebabkan MyComponent dibangun kembali (misalnya jika melakukan sesuatu yang mengubah props atau status) akan membawa Anda ke status loop tak terbatas.

Untuk mencegah hal ini, kami membungkus useCallback() di sekitar suatu fungsi dan mendefinisikan dependensinya untuk memastikan bahwa fungsi tersebut hanya dibuat ulang jika dependensinya berubah. Karenanya fungsinya tidak dideklarasikan ulang pada setiap siklus render lagi

Jadi kasus penggunaan di atas adalah ketika, useCallback hook sangat membantu: dengan nilai ketergantungan yang sama, hook mengembalikan instance fungsi yang sama antara rendering dan meningkatkan kinerja.

Semoga ini membantu Anda dalam memahami sebenarnya useCallback()! 😊

Terimakasih telah membaca artikel ini. Jika Anda menikmatinya, silakan klik tombol untuk membantu orang lain menemukannya.

Suggested posts

Menghindari Akibat Menghancurkan Stroke: Belajar dari Perjalanan Keluarga .

Menghindari Akibat Menghancurkan Stroke: Belajar dari Perjalanan Keluarga .

Pendahuluan Stroke adalah keadaan darurat medis yang dapat menyerang siapa saja kapan saja. Itu terjadi ketika aliran darah ke bagian otak terganggu, yang menyebabkan hilangnya fungsi otak secara tiba-tiba.

Jest — Kerangka Pengujian JavaScript yang Kuat

Jest — Kerangka Pengujian JavaScript yang Kuat

Pengujian adalah bagian penting dari pengembangan perangkat lunak. Ini memastikan bahwa kode dapat diandalkan, berfungsi seperti yang diharapkan, dan mengurangi kemungkinan kesalahan.

Related posts

Cara Menyelamatkan Planet dan Menghasilkan Uang

Cara Menyelamatkan Planet dan Menghasilkan Uang

Berapa kali Anda membuang botol plastik, toples kaca, kaleng aluminium, atau paket energi hijau tanpa berpikir dua kali? Berapa kali Anda berharap bisa mendapatkan sesuatu sebagai imbalan untuk mendaur ulangnya? Jika Anda seperti kebanyakan orang, jawabannya mungkin berkali-kali. Daur ulang sering dianggap merepotkan, tugas, atau tugas yang tidak membawa manfaat langsung atau nyata.

Pembunuhan Jordan Neely dan Masalah Rasisme “Patriotik”.

Bisakah AS mengambil langkah penting untuk tidak menyamakan perilaku rasis dengan menjadi orang Amerika yang baik?

Pembunuhan Jordan Neely dan Masalah Rasisme “Patriotik”.

[Peringatan pemicu: Esai ini mencakup tangkapan layar orang-orang yang memuji pembunuh Jordan Neely.] Petugas penegak hukum akhirnya - dan mungkin dengan enggan - menuntut Daniel Penny, pria yang mencekik Jordan Neely sampai dia mati, atas pembunuhan itu.

Tidak ada lagi kata sandi — bagaimana kunci sandi akan menggantikan kata sandi Anda

Tidak ada lagi kata sandi — bagaimana kunci sandi akan menggantikan kata sandi Anda

Untuk menghindari ambiguitas istilah berikut akan digunakan; Pengautentikasi; Ponsel yang digunakan untuk membuat situs web login; Situs web atau aplikasi yang digunakan pengguna untuk membuat Layanan permintaan login; Vendor menyediakan layanan yang diberikan misalnya

Belajar di Minggu Kerja lebih penting daripada yang Anda pikirkan

Belajar di Minggu Kerja lebih penting daripada yang Anda pikirkan

Kita sering menemukan diri kita berjuang untuk menerapkan apa yang kita tahu baik untuk kita. Dari memberi tahu orang penting bahwa kita mencintai mereka hingga mengingat untuk berbicara seperti bajak laut, akan selalu ada orang yang mengklaim bahwa acara sehari, seminggu, atau sebulan tidak diperlukan karena mereka sudah melakukan hal-hal itu.