0Pricing
React Academy · Pelajaran

Menghafalkan Nilai Context dengan useMemo

Bungkus objek nilai context dalam useMemo agar konsumen tidak melakukan render ulang secara tidak perlu.

Menghafalkan Nilai Context dengan useMemo 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 mempelajari alasan objek nilai konteks harus dimemoisasi dengan useMemo dan cara menyiapkan dependensi dengan benar untuk menghindari perenderan ulang yang tidak diperlukan.

Masalah Referensi Objek

Setiap kali komponen penyedia merender ulang, literal objek baru `{ ... }` dibuat sebagai nilai konteks — meskipun isinya sama. Semua konsumen merender ulang karena referensinya berubah.
// Every render creates a new object!
<UserCtx.Provider value={{ user, logout }}>
  {children}
</UserCtx.Provider>

Memperbaiki dengan useMemo

Bungkus nilai konteks dalam useMemo agar referensi objek yang sama dikembalikan di antara perenderan ketika tidak ada dependensi dalam larik yang berubah.
const value = useMemo(
  () => ({ user, logout }),
  [user, logout]
);

<UserCtx.Provider value={value}>
  {children}
</UserCtx.Provider>

Memilih Dependensi dengan Cermat

Sertakan setiap nilai yang digunakan di dalam useMemo dalam larik dependensi. Dependensi yang hilang menyebabkan nilai usang. Sertakan properti primitif (teks, angka) dan referensi stabil (fungsi yang dibungkus dalam useCallback).

Fungsi Stabil dengan useCallback

Nilai fungsi mengubah referensi pada setiap perenderan. Bungkus fungsi tersebut dalam useCallback sebelum menyertakannya dalam nilai konteks useMemo untuk mencegah perenderan ulang yang tidak diperlukan.
const logout = useCallback(() => {
  clearSession();
  setUser(null);
}, []);

const value = useMemo(() => ({ user, logout }), [user, logout]);

Saat Memoisasi Tidak Diperlukan

Jika komponen penyedia tidak pernah merender ulang, misalnya berada di bagian paling atas hierarki dan induknya tidak pernah berubah, useMemo menambah beban tanpa manfaat. Lakukan memoisi hanya ketika penyedia itu sendiri merender ulang.

Nilai Primitif Sudah Stabil

Jika nilai konteks Anda berupa nilai primitif (teks, angka, boolean), Anda TIDAK memerlukan useMemo — nilai primitif dibandingkan berdasarkan nilai, bukan referensi. `value={isDark}` tidak akan menyebabkan perenderan ulang tambahan.
// No useMemo needed for primitives
<ThemeCtx.Provider value={isDark ? 'dark' : 'light'}>
  {children}
</ThemeCtx.Provider>

Membuat Profil Dampak Memoisasi

Gunakan React DevTools Profiler untuk memastikan bahwa membungkus nilai konteks dalam useMemo benar-benar mengurangi perenderan ulang. Rekam sesi sebelum dan sesudahnya untuk melihat perbedaan jumlah penerapan.

Konteks Termemoisasi Bersarang

Ketika beberapa konteks disarangkan, memoisasikan masing-masing secara terpisah. Perubahan pada satu konteks tidak akan memengaruhi nilai termemoisasi konteks lainnya.

Pola Komponen Penyedia

Bungkus konteks, state, dan memoisasi di dalam komponen penyedia khusus. Ekspor kait khusus untuk menggunakan konteks tersebut. Ini adalah pola kanonis untuk konteks yang dapat digunakan kembali.
export function UserProvider({ children }) {
  const [user, setUser] = useState(null);
  const logout = useCallback(() => setUser(null), []);
  const value = useMemo(() => ({ user, logout }), [user, logout]);
  return <UserCtx.Provider value={value}>{children}</UserCtx.Provider>;
}

export const useUser = () => useContext(UserCtx);

Pemeriksaan Singkat

Apa alasan utama membungkus objek nilai konteks dalam useMemo?

Rangkuman

Bungkus objek nilai konteks dalam useMemo dengan dependensi yang tepat. Stabilkan nilai fungsi dengan useCallback. Nilai primitif tidak memerlukan memoisi. Bungkus penyiapan konteks dalam komponen penyedia dengan kait khusus.

Berikutnya

Pelajaran berikutnya: **Pola Pemilih Konteks** — Anda akan menerapkan kait pemilih yang hanya merender ulang konsumen ketika bagian tertentu dari konteks berubah.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menghafalkan Nilai Context dengan useMemo” gratis?

Ya — teks lengkap “Menghafalkan Nilai Context dengan useMemo” 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 “Menghafalkan Nilai Context dengan useMemo”?

Bungkus objek nilai context dalam useMemo agar konsumen tidak melakukan render ulang secara tidak perlu. 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 “Menghafalkan Nilai Context dengan useMemo” 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