Pernah nggak kamu merasa bahwa useState yang kamu punya mulai terasa kayak kulkas penuh — susah nyari isinya dan berantakan? Itulah momen ketika kamu butuh React state management yang lebih serius. Di artikel ke-13 dari Seri Belajar React: React from Zero to Zorro ini, kita bakal ngebahas dua solusi paling populer: Zustand dan Redux Toolkit. Dua tools yang sering bikin developer pemula bingung pilih yang mana. Spoiler: keduanya keren — tinggal tahu kapan pakai yang mana.
Global State adalah data yang perlu diakses oleh banyak komponen di berbagai level hierarki tanpa harus di-prop-drill satu per satu. Bayangkan seperti papan pengumuman kantor — semua orang bisa lihat dan update tanpa harus bisik-bisik ke setiap meja. Zustand dan Redux Toolkit adalah dua cara paling modern untuk mengelola papan pengumuman itu di React.
Kenapa useState Saja Tidak Cukup untuk Aplikasi Besar?
Coba bayangkan kamu lagi bangun aplikasi e-commerce. Ada komponen Navbar yang butuh tahu berapa item di cart. Ada komponen ProductCard yang bisa tambah item. Dan ada CheckoutPage yang butuh detail semua item. Kalau pakai useState biasa, kamu harus prop-drill data cart dari parent ke child ke grandchild — ini yang disebut "prop drilling hell".
Survei State of React 2024 menunjukkan bahwa Redux Toolkit masih menjadi state management library paling banyak digunakan, sementara Zustand adalah yang paling cepat pertumbuhannya — naik 40% dalam satu tahun terakhir!
Solusinya adalah menaruh state di tempat yang bisa diakses dari mana saja — itulah peran Zustand Redux Toolkit React state management. Keduanya punya pendekatan yang berbeda, tapi tujuannya sama: bikin kode kamu bersih, scalable, dan mudah di-debug.
Zustand: State Management yang Minimalis dan Powerful
Zustand (bahasa Jerman untuk "state") adalah library state management yang sangat ringan. Kalau Redux adalah kantor besar dengan SOP ketat dan banyak departemen, Zustand itu seperti Google Keep — simpel, langsung kerja, no nonsense.
Kalau aplikasi kamu masih relatif kecil-menengah (misalnya portfolio, todo app kompleks, atau blog dengan fitur autentikasi), Zustand adalah pilihan terbaik. Boilerplate-nya minimal dan kamu bisa langsung produktif dalam 15 menit.
🚀 Cara Pakai Zustand: Step by Step
npm install zustand
# atau yarn
yarn add zustand
create()
import { create } from 'zustand';
const useCartStore = create((set) => ({
items: [],
totalItems: 0,
addItem: (item) =>
set((state) => ({
items: [...state.items, item],
totalItems: state.totalItems + 1,
})),
removeItem: (id) =>
set((state) => ({
items: state.items.filter((i) => i.id !== id),
totalItems: state.totalItems - 1,
})),
}));
export default useCartStore;
import useCartStore from '../store/useCartStore';
function Navbar() {
const totalItems = useCartStore((state) => state.totalItems);
return (
<nav>
<span>🛒 Cart: {totalItems}</span>
</nav>
);
}
✨ Nggak perlu Provider! Nggak perlu useSelector yang panjang! Langsung panggil, langsung jalan.
Redux Toolkit: Solusi Enterprise untuk React State Management Skala Besar
Redux Toolkit (RTK) adalah cara resmi dan modern untuk pakai Redux — tanpa boilerplate yang nyebelin dari Redux versi lama. Kalau Zustand itu startup yang agile, Redux Toolkit itu perusahaan Fortune 500 yang punya prosedur jelas, tim besar, dan sistem audit yang ketat.
Redux Toolkit hadir dengan RTK Query — sebuah fitur bawaan untuk data fetching dan caching yang powerful. Ini berarti kamu bisa handle API calls, loading states, dan caching dalam satu ekosistem yang terintegrasi. Sangat berguna untuk aplikasi enterprise yang kompleks!
⚙️ Cara Pakai Redux Toolkit: Step by Step
createSlice()
import { createSlice } from '@reduxjs/toolkit';
const cartSlice = createSlice({
name: 'cart',
initialState: { items: [], totalItems: 0 },
reducers: {
addItem: (state, action) => {
state.items.push(action.payload);
state.totalItems += 1;
},
removeItem: (state, action) => {
state.items = state.items.filter(
(i) => i.id !== action.payload
);
state.totalItems -= 1;
},
},
});
export const { addItem, removeItem } = cartSlice.actions;
export default cartSlice.reducer;
import { configureStore } from '@reduxjs/toolkit';
import cartReducer from './cartSlice';
export const store = configureStore({
reducer: { cart: cartReducer },
});
// main.jsx
import { Provider } from 'react-redux';
import { store } from './store/store';
createRoot(document.getElementById('root')).render(
<Provider store={store}>
<App />
</Provider>
);
useSelector dan useDispatch
import { addItem } from '../store/cartSlice';
function ProductCard({ product }) {
const dispatch = useDispatch();
const totalItems = useSelector(
(state) => state.cart.totalItems
);
return (
<button onClick={() => dispatch(addItem(product))}>
Tambah ke Cart ({totalItems})
</button>
);
}
Zustand vs Redux Toolkit: Pilih yang Mana untuk Proyekmu?
Pertanyaan sejuta dolar! Keduanya adalah tools yang excellent untuk React state management, tapi punya karakteristik yang berbeda. Mari kita bedah secara jujur:
🔬 Analisis Mendalam: Kapan Pakai Apa?
| Aspek | ⚡ Zustand | 🏗️ Redux Toolkit |
|---|---|---|
| Ukuran Bundle | ~3KB ✅ | ~50KB ⚠️ |
| Boilerplate Code | Minimal ✅ | Sedang ⚠️ |
| Kurva Belajar | Sangat Mudah ✅ | Sedang–Tinggi ❗ |
| DevTools Support | Terbatas ⚠️ | Excellent ✅ |
| Data Fetching | Manual ❗ | RTK Query ✅ |
| Cocok untuk | Proyek kecil–menengah, MVP, startup | Aplikasi enterprise, tim besar |
| TypeScript Support | Baik ✅ | Excellent ✅ |
Jangan langsung lompat ke Redux Toolkit hanya karena dengar "itu yang dipakai di perusahaan besar." Kalau kamu masih belajar React, mulai dari Zustand. Pahami konsep global state dulu, baru upgrade ke RTK kalau memang dibutuhkan. Belajar yang benar itu bertahap — bukan langsung sprint 100 meter.
Beberapa developer pro menggunakan Zustand untuk UI state (sidebar open/close, modal, theme) dan RTK Query untuk server state (data dari API). Tidak ada aturan kaku — yang penting konsisten dalam satu proyek!
Tags Artikel
Seri Belajar React: React from Zero to Zorro
Kamu sedang membaca artikel ke-13 dari 16
Seri lengkap belajar React dari nol sampai mahir — mulai dari dasar JSX, Hooks, hingga state management skala besar dan deployment. Cocok untuk pemula yang ingin jalur belajar yang terstruktur.
🗂️ Lihat Daftar Isi Lengkap →
No comments:
Post a Comment