CodeBlanks Logo Icon CodeBlanks

Özel hook

Özel hook yazmayı öğrenirsin.

Özel hook nedir?

Özel hook (custom hook) birden çok bileşende paylaşılan state mantığını çıkarmaya yarar. Adı use ile başlar; örneğin useToggle, useCounter. Bu adlandırma bir zorunluluktur; React'in lint araçları bunu kullanır.

Bir özel hook aslında bir fonksiyondur; içinde başka hook'lar çağrılabilir. useState, useEffect gibi hook'ları birleştirerek yeniden kullanılabilir bir mantık parçası yazarsın. Özel hook'lar bileşenlerin karışıklığını azaltır ve test edilebilirliği artırır.

Hook ilkeleri

Özel hook yazarken iki ilkeyi izlemelisin. Birincisi: hook'lar yalnızca bileşenin en üst düzeyinde veya başka bir hook içinde çağrılır; döngü, koşul veya iç içe fonksiyon içinde çağrılmaz. İkincisi: birden çok hook'u aynı sırayla çağır.

Bu ilkeler React'in hook'ları doğru şekilde takip edebilmesi için gerekir. Aksi halde state karışır. Özel hook içinden değer döndürebilirsin: tek değer, dizi veya nesne. return [value, setValue] deseni yaygındır; böylece çağıran bileşen const [v, setV] = useMyHook() yıkımı yapar.

Uygulama İlk özel hook

Bir useGreeting adında özel hook yaz. İçinde useState ile bir name state'i tut (ilk değer "misafir"). Hook [name, setName] dizisi döndürsün.

Başlangıç kodu

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

// useGreeting özel hook'unu yaz
// useState ile name state'i tut
// [name, setName] döndür

Örnek çözüm

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

function useGreeting() {
  const [name, setName] = useState("misafir");
  return [name, setName];
}

Soru ve cevaplar

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

1 Özel hook adı neyle başlamalı?

App.js
function useToggle(initial) { /* ... */ }
  • handle
  • with
  • use Doğru cevap
  • on

Açıklama: Özel hook adı use ile başlar.

2 Hook adını tamamla

Soru
function ____(initial) {
  const [value, setValue] = useState(initial);
  return [value, setValue];
}
Cevap
function useToggle(initial) {
  const [value, setValue] = useState(initial);
  return [value, setValue];
}

Açıklama: Özel hook adı use ön ekiyle başlar.

3 Parçayı rolüne eşle

Kavram Anlamı
useToggle Özel hook adı
useState State tutar
return [v, setV] Değeri döndürür
use ön eki Hook belirtisi

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