CodeBlanks Logo Icon CodeBlanks

Zustand sepet store

Zustand ile bir sepet store'u yazarsın.

Zustand'a taşıma

Bu derste aynı sepet mantığını Zustand'a taşıyacaksın. create ile store yaz, addItem action'ını tanımla; bileşenler useCart hook'u ile erişir.

Zustand, Redux gibi Provider gerektirmez; store modül seviyesinde yaşar. Bu, kodu daha kısa ve anlaşılır yapar.

Aynı mantığın farklı kütüphanelerle çözümünü görmek, state yönetimini derinden kavramanı sağlar.

useCart store

Zustand store, bir hook olarak dışa aktarılır. Bileşenlerde const items = useCart((s) => s.items) ile sepeti okur, const addItem = useCart((s) => s.addItem) ile action alırsın.

set fonksiyonu, yeni state'i otomatik birleştirir; set((s) => ({ items: [...s.items, payload] })) eski listeye yeni öğe ekler.

Zustand, RTK'nin immer bağımlılığına benzer şekilde immutability'i otomatik sağlar; spread yazmak zorunda değilsin.

Uygulama useCart store yaz

Aşağıdaki iskeleti tamamla. create ile useCart store'u tanımla. State: { items: [], addItem: (product) => set((s) => ({ items: [...s.items, product] })) }. export const useCart = create(...) ile dışa aktar.

Başlangıç kodu

App.jsx
import { create } from 'zustand';

// useCart store'unu buraya yaz

Örnek çözüm

App.jsx
import { create } from 'zustand';

export const useCart = create((set) => ({
  items: [],
  addItem: (product) => set((s) => ({ items: [...s.items, product] })),
}));

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Zustand'ın Redux'a avantajı?

App.jsx
No provider = Zustand.
  • Daha hızlı çalışır
  • Daha çok kod yazar
  • Provider gerektirmez Doğru cevap
  • Yalnızca test için

Açıklama: Zustand Provider gerektirmez.

2 addItem action

Soru
addItem: (product) => ____((s) => ({ items: [...s.items, product] }));
Cevap
addItem: (product) => set((s) => ({ items: [...s.items, product] }));

Açıklama: set, state'i günceller.

3 Zustand sepet store: kavramları eşleştir

Kavram Anlamı
create Store kurar
useCart Hook döner
set State günceller
selector İlgili parça

İleri seviye bölümündeki tüm dersler