0Pricing
React Academy · Pelajaran

Pola Pemilih Context

Implementasikan hook pemilih sederhana yang hanya melakukan render ulang saat sebagian nilai context berubah.

Pola Pemilih Context adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 3 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 menerapkan kait pemilih konteks yang membuat komponen berlangganan hanya ke sebagian state konteks, sehingga mencegah perenderan ulang ketika bagian konteks yang tidak berkaitan berubah.

Masalah Pemilih

useContext merender ulang ketika bagian ANY dari konteks berubah. Jika komponen hanya memerlukan nama pengguna, tetapi konteks juga menyimpan daftar notifikasi, penambahan notifikasi akan menyebabkan komponen nama merender ulang tanpa diperlukan.

Apa Itu Pemilih

Pemilih adalah fungsi yang mengekstrak bagian state tertentu dari objek state yang lebih besar: `state => state.user.name`. Kait pemilih berlangganan ke konteks, tetapi hanya memicu perenderan ulang ketika nilai yang dipilih berubah.

Kait Pemilih Sederhana

Buat kait useSelector yang membaca konteks dan membungkusnya dalam useMemo berdasarkan hasil pemilih. Komponen hanya merender ulang ketika nilai yang dipilih berubah.
function useAppSelector(selector) {
  const state = useContext(AppCtx);
  return useMemo(() => selector(state), [state, selector]);
}

// Consumer only re-renders when user.name changes
const name = useAppSelector(s => s.user.name);

Pemeriksaan Kesetaraan Dangkal

useMemo dengan pemilih tetap menyebabkan perenderan ulang jika pemilih mengembalikan referensi objek/larik baru pada setiap pemanggilan, misalnya `s => s.items.filter(...)`. Gunakan perbandingan dangkal untuk melewati perenderan ulang ketika isinya sama.
import { useRef } from 'react';

function useSelector(selector) {
  const state = useContext(AppCtx);
  const selected = selector(state);
  const ref = useRef(selected);
  if (!shallowEqual(ref.current, selected)) {
    ref.current = selected;
  }
  return ref.current;
}

Pustaka use-context-selector

Untuk penggunaan produksi, pustaka **use-context-selector** menyediakan kait useContextSelector dengan langganan dan pemeriksaan kesetaraan yang efisien — tanpa memerlukan pengelola state eksternal.
import { useContextSelector } from 'use-context-selector';

const name = useContextSelector(AppCtx, s => s.user.name);

Zustand sebagai Solusi Berbasis Pemilih

Kait `useStore(selector)` milik Zustand memiliki dukungan pemilih bawaan dengan kesetaraan dangkal secara langsung, sehingga cocok untuk hierarki state besar yang memerlukan langganan terperinci.
const name = useAppStore(state => state.user.name);

Saat Pemilih Berlebihan

Jika pembaruan konteks jarang terjadi dan konsumen murah untuk dirender ulang, pemilih menambah kerumitan tanpa manfaat yang terukur. Buat profil terlebih dahulu — selalu lakukan pengoptimalan berdasarkan bukti.

Memoisasi Fungsi Pemilih

Jika Anda membuat pemilih secara langsung di dalam badan komponen, pemilih tersebut mendapatkan referensi fungsi baru pada setiap perenderan dan berpotensi merusak memoisi. Definisikan pemilih di luar komponen atau gunakan useCallback.
// Outside component — stable reference
const selectName = s => s.user.name;

function Profile() {
  const name = useAppSelector(selectName);
  return <p>{name}</p>;
}

Pemilih Turunan

Susun pemilih dengan memanggil satu pemilih dari dalam pemilih lainnya. Pemilih turunan menghitung nilai dari pemilih dasar, sehingga logika bisnis tetap berada di luar komponen.
const selectFullName = s => s.user.firstName + ' ' + s.user.lastName;

Pemeriksaan Singkat

Mengapa fungsi pemilih sebaiknya didefinisikan di luar badan komponen ketika digunakan dengan useContextSelector atau useMemo?

Rangkuman

Pemilih mengekstrak sebagian state konteks dan mencegah perenderan ulang ketika bagian yang tidak berkaitan berubah. Definisikan pemilih di luar komponen untuk mendapatkan referensi yang stabil. Gunakan use-context-selector atau Zustand untuk dukungan pemilih tingkat produksi.

Berikutnya

Pelajaran berikutnya: **Kapan Tidak Menggunakan Konteks** — Anda akan belajar mengenali kapan penerusan properti, komposisi, atau pengelola state lebih sesuai daripada Konteks.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pola Pemilih Context” gratis?

Ya — teks lengkap “Pola Pemilih Context” 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 “Pola Pemilih Context”?

Implementasikan hook pemilih sederhana yang hanya melakukan render ulang saat sebagian nilai context berubah. 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 3 dari 4.

Berapa lama pelajaran “Pola Pemilih Context” 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. Memisahkan Context untuk Membatasi Render Ulang
  2. Menghafalkan Nilai Context dengan useMemo
  3. Pola Pemilih Context
  4. Kapan Tidak Menggunakan Context
← Kembali ke React Academy