FrontEnd Developer Road Map

React Tutorial 2023 28 – Hooks Kavramı

Merhabalar bu yazımda temel olarak React’te Hooks kavramını ele alacağım. Burada paylaşacağım kod parçalarına şimdilik takılmayınız sadece birer örnek olsun diye paylaşmış olacağım. React’in Hooklarının tamamını sırayla işleyeceğiz.

React Hooks, React 16.8 sürümüyle birlikte tanıtılan ve fonksiyon bileşenlerinin durum (state) ve yaşam döngüsü gibi özelliklere erişimini sağlayan özelliklerdir.

Hooks, React’teki sınıf bileşenlerini genellikle gereksiz hale getirir çünkü Hooks sayesinde fonksiyon bileşenleri de durum yönetimini ve yaşam döngüsü metotlarını kullanabilir hale gelir. Bunun yanı sıra, Hooks ile birlikte React bileşenlerinin karmaşıklığı azalır ve daha okunabilir hale gelir.

Hooks, sınıf bileşenlerindekine benzer bir şekilde durum değişikliklerine ve yan etkilere (side-effects) tepki verir. Ancak Hooks, sınıf bileşenlerinin aksine daha basit bir sözdizimi kullanır ve bu sayede kod daha anlaşılır hale gelir.

Hooks, kod tekrarını önlemek ve durumları bileşenler arasında paylaşmak için kullanılabilir. 

Hooks kullanırken dikkat etmeniz gereken bazı kurallar da vardır.

  • Hooks, yalnızca React fonksiyon bileşenlerinden çağrılmalıdır. Normal JavaScript fonksiyonlarından Hooks çağırmamalısınız.
  • Hooks, yalnızca en üst seviyede çağrılmalıdır. Yani döngüler, koşullu ifadeler veya iç içe geçmiş fonksiyonlar içinde Hooks çağırmamalısınız.

Bu kurallar, Hooks’un düzgün çalışabilmesi için önemlidir.

React’in Ana Hook’ları

  1. useState: Bu Hook, fonksiyonel bileşenlerde state oluşturmayı ve yönetmeyi sağlar. Bu, bileşenin durumunu izlemenizi ve güncellemenizi sağlar.
const [count, setCount] = useState(0);

  1. useEffect: Bu Hook, fonksiyonel bileşenlerde yan etkileri (side effects) gerçekleştirmenizi sağlar. Yan etkiler genellikle API çağrıları, zamanlayıcılar ve manuel DOM manipülasyonları gibi işlemleri içerir.
useEffect(() => { document.title = `You clicked ${count} times`; });

  1. useContext: Bu Hook, React Context API’ye erişimi kolaylaştırır. Bu, bileşen ağacı boyunca global olarak erişilebilen verileri paylaşmanızı sağlar.
const theme = useContext(ThemeContext);

  1. useReducer: Bu Hook, daha karmaşık state mantığını yönetmenizi sağlar. useState Hook’unun yerine geçebilir ve genellikle birden çok alt değeri olan state’i yönetmek için kullanılır.
const [state, dispatch] = useReducer(reducer, initialState);

  1. useCallback: Bu Hook, gereksiz yeniden render’ları önlemek için kullanılır. Verilen fonksiyonu ve bağımlılık listesini alır ve bağımlılıklar değişene kadar aynı fonksiyonu döndürür.
const memoizedCallback = useCallback(() => { doSomething(a, b); }, [a, b]);

  1. useMemo: Bu Hook, işlem maliyeti yüksek fonksiyonların sonuçlarını “hatırlar” ve gereksiz hesaplamaları önler.
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

  1. useRef: Bu Hook, değişkenlere “referans” oluşturmayı sağlar. Bu, React bileşenleri arasında değerleri “hatırlamak” için kullanılabilir.
const myRef = useRef(initialValue);

  1. useImperativeHandle: Bu Hook, ebeveyn bileşenlerin çocuk bileşenlerin örneklerine erişmesini sağlar.
useImperativeHandle(ref, createHandle, [deps])

  1. useLayoutEffect: Bu Hook, DOM güncellemelerinden hemen sonra bir etkiyi gerçekleştirmenizi sağlar. useEffect ile aynı imzaya sahiptir ancak zamanlaması farklıdır.
useLayoutEffect(() => { // effect and cleanup code });

  1. useDebugValue: Bu Hook, özel Hook’ların içindeki değerleri görüntülemek için kullanılır. Bu, React DevTools gibi araçlarda daha iyi bir debug deneyimi sağlar.
useDebugValue(value); ```

Her bir Hook, belirli bir işlevi yerine getirir ve React uygulamanızın çeşitli yönlerini yönetmeye yardımcı olur. Bazen, belirli bir durumu ele almak için birden fazla Hook’un birleştirilmesi gerekebilir.

useState ve useEffect gibi dahili Hooks dışında, kendi özel Hooklarımızı da oluşturabiliriz.

Genel hatlarıyla Hooks kavramına baktık. Şimdi bir sonraki yazımda useState Hook’u ile devam edeceğiz.

Bir sonraki yazımda görüşmek üzere.

Murat Bilginer

21 Şubat 1992'de doğdum. Endüstri Mühendisi olarak lisansımı 2016 yılında tamamladım. Industryolog Akademi - NGenius oluşumlarının kurucusuyum. Şu anda kendi şirketim Brainy Tech ile Web ve Mobil Geliştirme, AWS, Google Cloud Platform Sistemleri için DevOps, Big Data Analiz ve Görselleştirme hizmetleri sunmakta ve Online Eğitimler vermekteyiz.

Share
Published by
Murat Bilginer

Recent Posts

Kedimiz Oly & FIP Süreci 10 – Oly’nin PCR Sonucu Çıktı FCov Pozitif…

Selamlar, bu yazımda sizlere Oly’nin çıkan PCR sonucu ve geçtiğimiz bir haftada hastalığın genel seyrinden…

1 gün ago

Kedimiz Oly & FIP Süreci 9 – 1 Haftalık GS İğnesi Serüveni – Oly İyileşiyor mu?

Selamlar, bu yazımda Oly'nin 1 hafta boyunca olduğu GS iğnesi, yaşanan değişimleri anlatmaya çalışacağım. PCR…

6 gün ago

Kedimiz Oly & FIP Süreci 8 – Yeniden Hayvan Hastanesi – Sonuç Kontrolü ve Sonrası…

Selamlar, bu yazımda Hemogram ve Biyokimya sonuçlarımızı göstermek için İÜCHH'ne tekrar gidişimizi ve sonrasını anlatacağım.…

6 gün ago

Kedimiz Oly & FIP Süreci 7 – GS İğnesine Başlama Kararımız ve Oly’de Dikkat Ettiklerimiz

Selamlar, bu yazımda GS iğnesine başlama kararımızı ve Oly’de bu süreçte nelere dikkat ediyor, neler…

6 gün ago

Kedimiz Oly & FIP Süreci 6 – İstanbul Üniversitesi Cerrahpaşa Hayvan Hastanesi Serüveni ve Sonrası

Selamlar, bu yazımda İÜCHH'deki tedavi sürecimiz ve sonrasında yaşananlardan bahsetmeye çalışacağım. 20.06.2025 Cuma günü saat…

1 hafta ago

Kedimiz Oly & FIP Süreci 5 – Teşhisten Önce Biz… Veterinerimize Güvenebilir Miydik?

Eve Dönüş ve İlk Şüpheler 18 Haziran Perşembe saat 23 sularında İstanbul’daki evimize giriş yaptık.…

1 hafta ago