KuloDev
1 Hari
0 XP
intermediate35 menitModul: 03-advanced-react-patterns

Membangun Custom Hooks yang Reusable & Clean Architecture

Pelajari teknik memisahkan logika UI dari logika bisnis dengan Custom Hooks (useLocalStorage, useDebounce, useMediaQuery) untuk kode yang modular dan testable.

1. Mengapa Kita Butuh Custom Hooks?

Ketika beberapa komponen membutuhkan logika stateful yang sama (misal: mengambil data dari API, sinkronisasi ke `localStorage`, atau mendeteksi ukuran layar), daripada menyalin-tempel `useState` dan `useEffect` di setiap komponen, kita mengekstrak logika tersebut ke dalam **Custom Hook** (fungsi yang diawali kata `use`).

2. Contoh Nyata: Custom Hook useLocalStorage

example.js
javascript
1import { useState, useEffect } from 'react';
2
3export function useLocalStorage(key, initialValue) {
4 const [value, setValue] = useState(() => {
5 try {
6 const item = localStorage.getItem(key);
7 return item ? JSON.parse(item) : initialValue;
8 } catch (e) {
9 return initialValue;
10 }
11 });
12
13 useEffect(() => {
14 try {
15 localStorage.setItem(key, JSON.stringify(value));
16 } catch (e) {
17 console.error(e);
18 }
19 }, [key, value]);
20
21 return [value, setValue];
22}
23
24// Cara penggunaannya sangat bersih mirip useState biasa:
25function ThemeToggle() {
26 const [theme, setTheme] = useLocalStorage('app_theme', 'light');
27 return (
28 <button onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}>
29 Tema: {theme}
30 </button>
31 );
32}

Selesaikan Materi Ini?

Dapatkan +25 XP dan simpan progres belajarmu.