CodeBlanks Logo Icon CodeBlanks

Özet - Özel hook'lar

useToggle, useCounter ve usePrevious'ı birleştirerek bir hook kütüphanesi yazarsın.

Özet - Özel hook'lar

Bu grupta özel hook yazmayı öğrendin. useToggle bir boolean'ı açıp kapar, useCounter sayıyı artırıp azaltır, usePrevious değerin bir önceki halini verir. Hook kompozisyonu ile bunları tek bir hook'ta birleştirirsin.

Şimdi bu üç hook'u bir kütüphane gibi yan yana yazacaksın. Her biri tek dosyada durduğunda istediğin bileşene içe aktarılır. Bu denge hem sade hem de ölçeklenebilir bir kod tabanı sağlar; gerçek uygulamalarda karşılaşacağın bir desendir.

Uygulama useToggle'ı yaz

useToggle özel hook'unu yaz. useState ile value tut (ilk değer initial). toggle fonksiyonu !value atar. Hook [value, toggle] döndürsün.

Başlangıç kodu

App.js
// useState'i içe aktar

// useToggle özel hook'unu yaz
// value state'i initial ile başlat
// toggle !value atar
// [value, toggle] döndür

Örnek çözüm

App.js
import { useState } from "react";

function useToggle(initial) {
  const [value, setValue] = useState(initial);
  const toggle = () => setValue(!value);
  return [value, toggle];
}

Uygulama useCounter'ı yaz

useCounter özel hook'unu yaz. useState ile count tut (ilk değer initial). increment fonksiyonu n (varsayılan 1) kadar artırsın. Hook [count, increment] döndürsün.

Başlangıç kodu

App.js
// useState'i içe aktar

// useCounter özel hook'unu yaz
// count state'i initial ile başlat
// increment fonksiyonu n kadar artırsın
// [count, increment] döndür

Örnek çözüm

App.js
import { useState } from "react";

function useCounter(initial) {
  const [count, setCount] = useState(initial);
  const increment = (n = 1) => setCount(count + n);
  return [count, increment];
}

Soru ve cevaplar

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

1 usePrevious ne tutar?

App.js
const prev = usePrevious(count);
  • Sıradaki render değerini
  • İlk değeri sonsuza dek
  • Mevcut render değerini
  • Bir önceki render değerini Doğru cevap

Açıklama: usePrevious bir önceki render değerini tutar.

2 Hook'u rolüne eşle

Kavram Anlamı
useToggle Aç/kapa
useCounter Artır/azalt
usePrevious Eski değer
useRef Mutable referans

3 Hook adını tamamla

Soru
function ____(initial) {
  const [count, setCount] = useState(initial);
  return [count, setCount];
}
Cevap
function useCounter(initial) {
  const [count, setCount] = useState(initial);
  return [count, setCount];
}

Açıklama: Hook adı useCounter olur.

Orta seviye bölümündeki tüm dersler