CodeBlanks Logo Icon CodeBlanks

Zustand

Zustand lightweight state yönetimini öğrenirsin.

Zustand

Zustand, hafif bir state yönetim çerçevesidir. Redux'a göre çok daha az iskelet kodu gerektirir; provider, action type ve reducer yazman gerekmez. Tek dosyada store tanımlanır ve bileşenler doğrudan hook olarak kullanır. Kurulum: npm install zustand.

Bir store oluşturmak için create çağrılır. Dönen değer bir hook'tür; bileşen içinde çağrılarak state okunur. Zustand, küçük ve orta ölçekli React Native projelerinde çok tercih edilir. Karmaşık olmayan API'si sayesinde öğrenmesi hızlıdır.

Store tanımı

Zustand'da store, create çağrısıyla tanımlanır. İşleve bir geri çağrı (callback) verilir; bu geri çağrı set ve get parametreleri alır ve bir nesne döndürür. Dönen nesne, state alanlarını ve action işlevlerini taşır.

Örnek: const useCounter = create((set) => ({ count: 0, increment: () => set((s) => ({ count: s.count + 1 })) })). Burada count state, increment ise action'dır. set, state'i güncellemek için kullanılır; get ise mevcut state'i okumak için. Dışa aktarmak için export eklemen yeterli.

Uygulama useCounter store'u yaz

Boş dosyayı tamamla. create'i zustand'tan içe aktar. export const useCounter'ı create((set) => ({ count: 0, increment: () => set((s) => ({ count: s.count + 1 })) })) ile tanımla.

Başlangıç kodu

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

// useCounter store'unu tanımla

Örnek çözüm

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

export const useCounter = create((set) => ({
  count: 0,
  increment: () => set((s) => ({ count: s.count + 1 })),
}));

Soru ve cevaplar

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

1 Zustand neyi azaltır?

  • İskelet kod miktarını Doğru cevap
  • Animasyon kalıtesini
  • Kamera çözünürlüğünü
  • Stillerin sayısını

Açıklama: Zustand iskelet kod miktarını azaltır.

2 create çağrısı

Soru
export const useCounter = ____((set) => ({ count: 0, increment: () => set((s) => ({ count: s.count + 1 })) }));
Cevap
export const useCounter = create((set) => ({ count: 0, increment: () => set((s) => ({ count: s.count + 1 })) }));

Açıklama: create ile store tanımlanır.

3 Parçayı rolüne eşle

Kavram Anlamı
create Store oluşturur
set State'i günceller
get State'i okur
useCounter Hook olarak kullanılır

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