CodeBlanks Logo Icon CodeBlanks

useState vs useReducer

Hangi durumlarda useReducer'ın tercih edileceğini öğrenirsin.

useState vs useReducer

Hangisini seçeceğin state'in karmaşıklığına bağlıdır. Tek bir sayı veya metin için useState yeter; birkaç ilişkili alan veya çok sayıda geçiş varsa useReducer temizdir.

useReducer mantığı tek yerde toplar; test ederken bileşene gerek kalmaz. useState ise daha az satır ve daha az kavram gerektirir.

İkisi de eşit derecede hızlıdır; seçim okunabilirliğe bağlıdır.

Geçiş tablosu

useReducer'ın gücü, geçişlerin bir tablo gibi okunabilmesidir. Her aksiyon türü yeni bir state üretir; bu, hata ayıklamayı kolaylaştırır.

useState'te mantık handler'ların içine dağılır; bir hatayı bulmak birden çok fonksiyona bakmayı gerektirir.

İleride Redux gibi kütüphaneler aynı reducer modelini genişletecek; temeli burada öğrenmek önemlidir.

Uygulama Çift yollu sayaç

Aşağıdaki iskeleti tamamla. reducer fonksiyonu yaz; switch(action.type) içinde case "up": return state + 1;, case "down": return state - 1; ve default: return state; olsun. Counter bileşeni yaz; useReducer'ı içe aktar, const [state, dispatch] = useReducer(reducer, 0); tanımla. <button onClick={() => dispatch({type: "up"})}>{state}</button> döndür. Dışa aktar.

Başlangıç kodu

App.jsx
import { useReducer } from "react";

// reducer ve Counter bileşenini buraya tanımla

Örnek çözüm

App.jsx
import { useReducer } from "react";

function reducer(state, action) {
  switch (action.type) {
    case "up": return state + 1;
    case "down": return state - 1;
    default: return state;
  }
}

function Counter() {
  const [state, dispatch] = useReducer(reducer, 0);
  return <button onClick={() => dispatch({ type: "up" })}>{state}</button>;
}

export default Counter;

Soru ve cevaplar

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

1 Birkaç ilişkili alan ve çok geçiş varsa en iyi seçim?

App.jsx
useReducer collects logic in one place.
  • useReducer Doğru cevap
  • useRef
  • useState
  • prop

Açıklama: useReducer karmaşık geçişleri toplar.

2 useState vs useReducer: eksik parçayı tamamla

Soru
const [count, setCount] = ____(0);
Cevap
const [count, setCount] = useState(0);

Açıklama: Basit sayaç için useState yeter.

3 useState vs useReducer: kavramları eşleştir

Kavram Anlamı
useState Basit state
useReducer Karmaşık state
dispatch Aksiyon gönderir
reducer Saf fonksiyon

Başlangıç bölümündeki tüm dersler