Latihan 1: Debugging React — Debugging

Latihan 1 dari materi Debugging React di Debugging — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Kode awal sudah punya log (11 catatan render dari Profiler) dan enam baris console.log, biarkan. Lengkapi tiga function. Tiap catatan berbentuk { component, duration, reason, props, state }, dan reason salah satu dari "mount", "props", "state", "parent", "hooks".

  1. profilerSummary(renders) mengembalikan object berisi:
    • totalDuration: jumlah semua duration, dibulatkan dengan Math.round
    • byReason: object berisi banyaknya catatan per reason, misalnya { mount: 4, state: 2, parent: 5 }
    • slowestComponent: nama komponen dengan total duration terbesar (jumlahkan per komponen dulu)
  2. findWastedRenders(renders) mengembalikan array nama komponen yang punya render sia-sia, tiap nama sekali, urut alfabet. Render sia-sia adalah catatan dengan reason "parent" yang props dan state-nya sama persis (bandingkan dengan JSON.stringify) dengan salah satu catatan sebelumnya dari komponen yang sama.
  3. recommendMemo(renders, threshold) mengembalikan array nama komponen yang render sia-sianya minimal threshold kali, urut alfabet.

Yang dicek, satu per baris di console, urut: 49, 4, 5, List, Item,List, Item,List.

Ada juga cek dengan log lain: dari catatan A (1 ms) dan B (9 ms), slowestComponent harus "B". Untuk komponen X yang mount lalu render karena "parent" dengan props dan state kosong yang sama, findWastedRenders harus menghasilkan X, dan recommendMemo dengan threshold 2 harus mengembalikan array kosong.

Hint