Latihan 1 dari materi React.memo di React — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Kode awal sudah punya ExpensiveList yang dibungkus memo, dan App dengan counter. Masalahnya: tiap tombol +1 diklik, List dirender tetap tercetak lagi di console. Perbaiki supaya memo-nya benar-benar bekerja.
Biarkan ExpensiveList dibungkus memo(...), dengan console.log("List dirender") di dalamnya, sebelum return.
ExpensiveList merender <ul id="list"> berisi 3 <li> dari items.map(...), berurutan A, B, C: item pertama A, item terakhir C.
Biarkan counter di App (<span id="count"> dan <button id="inc">) seperti di kode awal.
Buat items tetap sama di tiap render: pindahkan const items = ["A", "B", "C"] ke luar App, atau bungkus dengan useMemo.
memo, useState dan useMemo sudah tersedia di editor. Baris import boleh ditulis seperti di proyek sungguhan, tapi gak wajib.
Yang dicek:
Ada #list dengan minimal 3 <li>. <li> pertama berisi A, <li> terakhir berisi C.
Kata memo ada di kodemu, bukan cuma di komentar, dan console.log("List dirender") ada di dalam ExpensiveList.
List dirender muncul di console waktu halaman pertama kali dirender.
Sesudah #inc diklik, #count jadi 1, dan List direndergak muncul lagi.
Hint
memo cuma melewati render kalau semua props-nya sama dengan render sebelumnya. Array dibandingkan identitasnya, bukan isinya, jadi array yang dibuat ulang selalu dianggap beda.
Baris const items = [...] di dalam App jalan lagi tiap App render dan membuat array baru. Buat array itu sekali saja di luar App, atau pakai useMemo dengan deps kosong.
Taruh const items = ["A", "B", "C"] di atas function App, hapus baris yang sama di dalam App, lalu tetap kirim <ExpensiveList items={items} />.
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...