Global State: Zustand 🐻
Di React, kita belajar Context API buat nyimpen data global. Tapi itu butuh <Provider> yang bikin kodingan numpuk.
Di dunia kerja, kita pake Zustand. Library gambar beruang ini kecil, ngebut, dan gampang banget.
1. Install 📦
npm install zustand2. Buat Store 🏪
Bikin file src/store/useCartStore.ts. Kita mau nyimpen data Keranjang Belanja.
import { create } from "zustand";
// Definisikan tipe datanya (TS)
interface CartState {
totalItem: number;
tambah: () => void;
reset: () => void;
}
// Bikin Store-nya
export const useCartStore = create<CartState>((set) => ({
totalItem: 0, // Data awal
// Aksi (Function buat ngubah data)
tambah: () => set((state) => ({ totalItem: state.totalItem + 1 })),
reset: () => set({ totalItem: 0 }),
}));3. Pake di Mana Aja (Tanpa Provider) 🚀
Lo bisa pake ini di Navbar, di Halaman Checkout, di mana aja. Gak perlu bungkus-bungkus app.
"use client";
import { useCartStore } from "@/store/useCartStore";
export default function Navbar() {
// Ambil data dan function dari gudang
const { totalItem, tambah } = useCartStore();
return (
<div className="flex gap-4">
<h1>Keranjang: {totalItem} barang</h1>
<button onClick={tambah}>Beli Lagi</button>
</div>
);
}💡
Kenapa Zustand?
-
Boilerplate dikit: Gak perlu file
reducer,action,typesyang misah-misah kayak Redux. -
No Provider Hell: Gak perlu
MainContext.Providerdilayout.tsx.