React Academy · Pelajaran

Corak Pemilih Konteks

Laksanakan cangkuk pemilih ringkas yang hanya melakukan pemaparan semula apabila sebahagian konteks berubah.

Pelajaran 3 daripada 413 langkah

Corak Pemilih Konteks ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Selamat datang

Dalam pelajaran ini, Anda akan melaksanakan cangkuk pemilih konteks yang melanggan komponen kepada hanya sebahagian state konteks, lalu mencegah pemaparan semula apabila bahagian konteks yang tidak berkaitan berubah.

Masalah Pemilih

useContext menyebabkan pemaparan semula apabila ANY bahagian konteks berubah. Jika komponen hanya memerlukan nama pengguna tetapi konteks turut menyimpan senarai pemberitahuan, penambahan pemberitahuan akan menyebabkan komponen nama dipaparkan semula tanpa keperluan.

Apakah Itu Pemilih

Pemilih ialah fungsi yang mengekstrak bahagian state tertentu daripada objek state yang lebih besar: `state => state.user.name`. Cangkuk pemilih melanggan konteks tetapi hanya mencetuskan pemaparan semula apabila nilai yang dipilih berubah.

Cangkuk Pemilih Ringkas

Bina cangkuk useSelector yang membaca konteks dan membungkusnya dalam useMemo berdasarkan hasil pemilih. Komponen hanya dipaparkan semula apabila 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 Kesamaan Cetek

useMemo dengan pemilih masih menyebabkan pemaparan semula jika pemilih mengembalikan rujukan objek atau tatasusunan baharu pada setiap panggilan, seperti `s => s.items.filter(...)`. Gunakan perbandingan kesamaan cetek untuk melangkau pemaparan semula apabila kandungannya 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 kegunaan pengeluaran, pustaka **use-context-selector** menyediakan cangkuk useContextSelector dengan langganan dan pemeriksaan kesamaan yang cekap — tanpa memerlukan pengurus state luaran.
import { useContextSelector } from 'use-context-selector';

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

Zustand sebagai Penyelesaian Asli Pemilih

Cangkuk `useStore(selector)` milik Zustand mempunyai sokongan pemilih terbina dalam dengan kesamaan cetek, menjadikannya sesuai untuk pepohon state besar yang memerlukan langganan terperinci.
const name = useAppStore(state => state.user.name);

Apabila Pemilih Berlebihan

Jika kemas kini konteks jarang berlaku dan pengguna mudah dipaparkan semula, pemilih menambah kerumitan tanpa manfaat yang boleh diukur. Buat profil dahulu — sentiasa optimumkan berdasarkan bukti.

Memoisasi Fungsi Pemilih

Jika Anda mencipta pemilih secara sebaris dalam badan komponen, pemilih itu mendapat rujukan fungsi baharu pada setiap pemaparan dan berpotensi memecahkan memoization. Takrifkan 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 Terbitan

Gubah pemilih dengan memanggil satu pemilih dari dalam pemilih yang lain. Pemilih terbitan mengira nilai daripada pemilih asas, lalu mengekalkan logik perniagaan di luar komponen.
const selectFullName = s => s.user.firstName + ' ' + s.user.lastName;

Semakan Ringkas

Mengapakah fungsi pemilih patut ditakrifkan di luar badan komponen apabila digunakan dengan useContextSelector atau useMemo?

Ulang Kaji

Pemilih mengekstrak sebahagian state konteks dan mencegah pemaparan semula apabila bahagian yang tidak berkaitan berubah. Takrifkan pemilih di luar komponen untuk mendapatkan rujukan yang stabil. Gunakan use-context-selector atau Zustand untuk sokongan pemilih yang sesuai bagi penggunaan pengeluaran.

Seterusnya

Pelajaran seterusnya: **Bila Tidak Menggunakan Konteks** — Anda akan belajar mengenal pasti masa penghantaran sifat, penggubahan atau pengurus state lebih sesuai berbanding Konteks.
Percuma untuk bermula

Pelajari React dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
88
Pelajaran
324

Soalan Lazim

Adakah pelajaran “Corak Pemilih Konteks” percuma?

Ya — teks penuh “Corak Pemilih Konteks” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Corak Pemilih Konteks”?

Laksanakan cangkuk pemilih ringkas yang hanya melakukan pemaparan semula apabila sebahagian konteks berubah. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan React Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Corak Pemilih Konteks” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Memisahkan Konteks untuk Mengehadkan Pemaparan Semula
  2. Memoisasi Nilai Konteks dengan useMemo
  3. Corak Pemilih Konteks
  4. Bila Tidak Patut Menggunakan Konteks
← Kembali ke React Academy