Genel

React Tutorial 2023 43 – useEffect Hook’u 3 – With Dependecies

Merhabalar.

Bu yazımızda useEffect Hook’unu dependency’ler ile beraber nasıl kullanabileceğimize bakacağız.

Bir önceki yazımda oluşturduğumuz blog component’i üzerinden devam edeceğiz.

Öncelikle neler’i dependency olarak verebiliriz ve ne olursa ne gerçekleşir bunları paylaşmak istiyorum.

useEffect içindeki dependency list, hangi durumların değiştiğinde useEffect‘in tekrar çalışacağını belirler. Eğer dependency list boş bırakılırsa, useEffect sadece bileşen mount olduğunda bir kere çalışır ve daha sonraki güncellemelerde çalışmaz. Ancak, bir veya daha fazla state veya prop değeri ekleyerek, sadece bu değerler değiştiğinde veya güncellendiğinde useEffect‘in tekrar çalışmasını sağlayabilirsiniz.

Belirli Bir State

useEffect(() => {
  // Bu useEffect, sadece count state'i değiştiğinde çalışır.
  console.log('Count değeri güncellendi!');
}, [count]);

Bu örnekte, count state’i değiştiğinde useEffect tekrar çalışır.

Birden Fazla State

useEffect(() => {
  // Bu useEffect, sadece count veya username değiştiğinde çalışır.
  console.log('Count veya username değeri güncellendi!');
}, [count, username]);

Bu örnekte, count veya username state’lerinden herhangi biri değiştiğinde useEffect tekrar çalışır.

Bu örnekte, dependency list boş bırakıldığı için useEffect sadece bileşenin ilk mount olduğunda çalışır.

Props

useEffect(() => {
  // Bu useEffect, sadece belirli bir prop değiştiğinde çalışır.
  console.log('userID prop değeri güncellendi!');
}, [userID]);

Bu örnekte, userID prop’u değiştiğinde useEffect tekrar çalışır.

Herhangi Bir State – Prop

useEffect(() => {
  // Bu useEffect, herhangi bir state güncellendiğinde çalışır.
  console.log('Herhangi bir state değeri güncellendi!');
}, []);

Bu örnekte, dependency list boş bırakıldığı için useEffect sadece bileşenin ilk mount olduğunda çalışır.

Kendi Örneğimiz

Şimdi kendi örneğimize bakalım.

blog isminde bir state’im vardı. Bu state güncellendikçe, istiyorum ki LocalStorage’a yazacağım blog değişkenli değer de tekrar güncellensin.

useEffect(() => {
        localStorage.setItem('blog', JSON.stringify({blog:blog}));
    }, [blog])
import React, {Fragment, useState, useEffect} from 'react' 
import './Blog.css'

const Blog = () => {

    const [blog, setBlog] = useState([]);
    const [newPost, setNewPost] = useState({ title: '', content: '' });

    const handleInputChange = (event) => {
        setNewPost({ ...newPost, [event.target.name]: event.target.value });
    };

    const handleSubmit = (event) => {
        event.preventDefault();
        setBlog([...blog, newPost]);
        setNewPost({ title: '', content: '' });
    };

    useEffect(() => {
        localStorage.setItem('blog', JSON.stringify({blog:blog}));
    }, [blog])

    

    return (
        <Fragment>
        <form className='blog-form' onSubmit={handleSubmit}>
            <input name="title" value={newPost.title} onChange={handleInputChange} placeholder="Başlık" />
            <textarea name="content" value={newPost.content} onChange={handleInputChange} placeholder="İçerik" rows="9" />
            <button type="submit">Ekle</button>
        </form>
        {blog.map((post, index) => (
            <div key={index} className="post">
                <h2 className="post-title">{post.title}</h2>
                <p className="post-content">{post.content}</p>
            </div>
        ))}
    </Fragment>
    )
}

export default Blog

LocalStorage’a nasıl bakabileceğinizi görüntüde gösterdim. Her blog güncellemesinde yani her yeni blog içerik eklendiğinde useEffect tetikleniyor ve localStorage’a yeni halini güncelliyor.

Hepsi bu kadardı. Oluşabilecek durumlar gerçek hayat projelerinde çok fazla çeşitli olacaktır. Bunlar sizin kontrolünüzde.

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 11 – Oly Melek Oldu :'( Veda…

Hüzünlü bir selam. Bu yazı dizisine başlarken büyük umutlarım vardı. Oly’nin FIP durumunu erken teşhis…

2 gün ago

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…

4 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…

1 hafta 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.…

1 hafta 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…

1 hafta 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