KuloDev
1 Hari
0 XP
intermediate35 menitModul: 01-react-fundamentals

State Management, Hooks (useState, useEffect) & Immutability

Pelajari prinsip immutability state di React, aturan Hooks, jebakan Dependency Array pada useEffect, dan pembersihan efek (Cleanup functions).

1. Aturan Emas: Immutability State

Di React, Anda **tidak boleh mengubah nilai state secara langsung (mutating state)**. React menggunakan perbandingan referensi objek (`Object.is()` / shallow comparison) untuk mendeteksi apakah komponen perlu di-render ulang.

example.js
javascript
1// ❌ SALAH: Mutasi langsung (React tidak tahu ada perubahan)
2items.push(newItem);
3setItems(items); // Referensi memori array tetap sama, render tidak terjadi!
4
5// ✅ BENAR: Buat salinan baru (Immutable Update)
6setItems([...items, newItem]);
7
8// Update objek:
9setUser({ ...user, name: 'Nama Baru' });

2. Menguasai useEffect & Dependency Array

`useEffect` digunakan untuk menyinkronkan komponen dengan sistem eksternal (API fetch, timer, event listener window, websocket).

example.js
javascript
1import { useState, useEffect } from 'react';
2
3function UserProfile({ userId }) {
4 const [user, setUser] = useState(null);
5
6 useEffect(() => {
7 let isMounted = true;
8
9 async function fetchData() {
10 const res = await fetch(`/api/users/${userId}`);
11 const data = await res.json();
12 if (isMounted) setUser(data);
13 }
14
15 fetchData();
16
17 // Cleanup function: Dijalankan saat komponen unmount atau sebelum efek berikutnya
18 return () => {
19 isMounted = false;
20 };
21 }, [userId]); // Hanya re-run jika userId berubah
22
23 return <div>{user ? user.name : 'Loading...'}</div>;
24}

Selesaikan Materi Ini?

Dapatkan +25 XP dan simpan progres belajarmu.