React Academy · Pelajaran

Pemilih & Pencegahan Render Ulang yang Tidak Perlu

Ekstrak potongan status tertentu melalui pemilih agar komponen hanya melakukan render ulang saat diperlukan.

Pelajaran 2 dari 413 langkah

Pemilih & Pencegahan Render Ulang yang Tidak Perlu adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Selamat Datang

Dalam pelajaran ini, Anda akan menggunakan pemilih Zustand agar komponen hanya berlangganan bagian status yang diperlukan, sehingga mencegah render ulang yang tidak perlu ketika bagian lain dari penyimpanan berubah.

Masalah Pemilih Bawaan

Memanggil pengait penyimpanan tanpa pemilih akan mengembalikan seluruh objek penyimpanan. Komponen akan dirender ulang pada setiap perubahan penyimpanan, bahkan perubahan pada status yang tidak terkait.
// Bad: re-renders on every store change
const store = useAppStore();
return <p>{store.user.name}</p>;

Menggunakan Pemilih

Teruskan fungsi pemilih ke pengait penyimpanan. Komponen hanya dirender ulang ketika nilai yang dikembalikan pemilih berubah.
// Good: re-renders only when user.name changes
const name = useAppStore(s => s.user.name);
return <p>{name}</p>;

Pemeriksaan Kesetaraan Referensi

Zustand menggunakan kesetaraan ketat (===) secara bawaan. Jika pemilih Anda mengembalikan objek atau larik baru pada setiap pemanggilan, komponen akan dirender ulang meskipun isinya sama.
// Creates a new object every time — always re-renders!
const info = useStore(s => ({ id: s.id, name: s.name }));

Memperbaikinya dengan Kesetaraan Dangkal

Impor `shallow` dari zustand dan teruskan sebagai fungsi kesetaraan untuk mencegah render ulang ketika isi objek sama.
import { shallow } from 'zustand/shallow';

const info = useAppStore(
  s => ({ id: s.id, name: s.name }),
  shallow // compare by content, not reference
);

Memilih Beberapa Nilai

Gunakan pola kesetaraan dangkal untuk memilih beberapa nilai sekaligus tanpa membuat render ulang yang tidak perlu.
const { items, loading } = useCartStore(
  s => ({ items: s.items, loading: s.loading }),
  shallow
);

Referensi Tindakan yang Stabil

Tindakan (fungsi) dalam Zustand memiliki referensi yang stabil — tindakan tersebut tidak berubah ketika status diperbarui. Anda dapat memilihnya tanpa shallow dan tindakan tersebut tidak akan menyebabkan render ulang.
// Actions are always stable — no shallow needed
const addToCart = useCartStore(s => s.addToCart);

Pembantu useShallow (Zustand v5+)

Zustand v5 menyediakan utilitas useShallow yang secara otomatis membungkus pemilih dengan kesetaraan dangkal, sehingga kode menjadi lebih rapi.
import { useShallow } from 'zustand/react/shallow';

const { items, loading } = useCartStore(
  useShallow(s => ({ items: s.items, loading: s.loading }))
);

Menggabungkan Pemilih

Turunkan nilai terhitung di dalam pemilih agar tidak perlu menyimpan status turunan dalam penyimpanan. Hitung total, daftar yang difilter, atau string yang diformat di dalam pemilih.
const totalPrice = useCartStore(
  s => s.items.reduce((sum, item) => sum + item.price, 0)
);

Menganalisis Render Ulang Zustand

Gunakan React DevTools Profiler untuk memverifikasi bahwa pemilih Anda berfungsi. Setelah menambahkan elemen yang tidak terkait ke penyimpanan, periksa bahwa komponen yang hanya menggunakan pemilih nama NOT muncul dalam grafik api komit.

Pemeriksaan Singkat

Mengapa Anda perlu menggunakan kesetaraan dangkal ketika pemilih Zustand mengembalikan sebuah objek?

Ringkasan

Selalu gunakan pemilih yang spesifik. Gunakan kesetaraan dangkal saat memilih beberapa nilai sebagai objek. Turunkan nilai terhitung di dalam pemilih. Tindakan memiliki referensi yang stabil dan tidak memerlukan shallow.

Berikutnya

Pelajaran berikutnya: **Menyimpan Status dengan Perantara Persist** — Anda akan menyinkronkan status Zustand ke localStorage menggunakan perantara persist.
Gratis untuk memulai

Belajar React dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
88
Pelajaran
324

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pemilih & Pencegahan Render Ulang yang Tidak Perlu” gratis?

Ya — teks lengkap “Pemilih & Pencegahan Render Ulang yang Tidak Perlu” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pemilih & Pencegahan Render Ulang yang Tidak Perlu”?

Ekstrak potongan status tertentu melalui pemilih agar komponen hanya melakukan render ulang saat diperlukan. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Pemilih & Pencegahan Render Ulang yang Tidak Perlu” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membuat Store Zustand Pertama Anda
  2. Pemilih & Pencegahan Render Ulang yang Tidak Perlu
  3. Mempertahankan Status dengan Middleware Persist
  4. DevTools Zustand & Pengujian Store
← Kembali ke React Academy