React useContext Nedir? React useContext Kullanımı

React yazı dizimize önemli bir konu ile devam ediyoruz. Bu yazımızda  React useContext Nedir, React useContext Kullanımı‘na bakacağız.

useContext React tarafından sağlanan ve farklı componentler arasında verilere erişmemizi ve bunları kullanmamızı sağlayan güçlü bir hook’tur. Bu yazımızda, React useContext’in ne olduğunu, onu neden kullandığımızı ve bize sunduğu faydaları anlamanız için size adım adım yol göstereceğim.

İster React’te yeni olun ister temel bilgilerine zaten aşina olun, bu useContext kılavuzu, konuyu kavramanıza ve useContext’i etkili bir şekilde kullanmaya başlamanıza yardımcı olacaktır.

React Hook Nedir?

React Hook, React 16.8 sürümü ile birlikte eklenen ve function componentlerde state ve lifecycle yönetimi sağlayan özelliktir. Componentlerde state ve lifecycle yönetimi için sınıf bileşenlerine ihtiyaç duymadan, function componentlerde bu işlevleri kullanmamıza imkan tanır.

React useContext Nedir? Neden Kullanılır?

useContext, React Hooklarından biridir ve React uygulamalarında global state yönetimini kolaylaştırmak için kullanılır. Componentler arasında veri iletişimini ve paylaşımını basitleştirir. useContext sayesinde state’i props drilling olmadan istediğimiz componentten diğerine aktarabiliriz.

Öncelikle, useContext’ı kullanmak için React 16.8 sürümü veya daha üst bir sürüme sahip olmalıyız. createContext() fonksiyonunu kullanarak bir context oluştururuz ve bu context içindeki veriyi paylaşmak istediğimiz componentlerde erişim sağlarız. 

React uygulamalarında state yönetimi büyük önem taşır. Özellikle büyük uygulamalarda state yönetimini sağlamak için props drilling (prop’ları alt componentlere aktarma) kullanmak karmaşık hale gelebilir. Bu durumda useContext kullanarak state’i tüm componentlere kolayca ulaştırabiliriz. Bu sayede, state’i tekrar tekrar props olarak iletmek zorunda kalmayız ve uygulamanın performansını artırırız.

React useContext’ın Faydaları

  1. Daha Temiz ve Daha Kısa Kod: useContext sayesinde state’i props drilling olmadan doğrudan componentlere iletebiliriz. Bu, kodun daha temiz ve daha kısa olmasını sağlar.

  2. Performans Artışı: Props drilling yerine useContext kullanmak, uygulamanın performansını artırır. Çünkü her componentte state’i props olarak iletmek, gereksiz yeniden render işlemlerine neden olabilir. useContext sayesinde bu durumu önlemiş oluruz.

  3. Daha İyi Yönetilebilirlik: Global state’i kullanmak, uygulamadaki componentler arasında veri paylaşımını kolaylaştırır ve state yönetimini daha iyi bir şekilde yapmamızı sağlar.

React useContext Kullanımı

Örnek olarak, bir tema değiştirme özelliği olan bir React uygulaması düşünelim. useContext kullanmadan önce, tema bilgisini her alt componente props olarak geçmemiz gerekecekti. Ancak useContext kullanarak tema bilgisine her componentten erişebilir ve değiştirebiliriz. Şimdi bunu örnek üzerinde detaylı olarak görelim.

 Adım 1:   

İlk olarak context yapısını oluşturacağım. Bunun için bir component oluşturmam lazım. Bu componentin içine context provider’ımı oluşturacağım.

Bu örnekte oluşturmak istediğim context, tema ile ilgili. Componentime ThemeContext.js adını veriyorum ve içerisine ThemeContext adında bir context oluşturuyorum. ThemeContextProvider  adında fonksiyonumu yazıyorum. Daha sonra da bunu diğer componentlerde kullanabilmek için export ediyorum.

ThemeContext .js

Artık uygulamamda kullanacağım bütün state’leri, fonksiyonları burada oluşturacağım ve value olarak (props gibi) süslü parantezler içerisine yazacağım. Böylece istediğim componentte bunlara erişebilir ve kullanabilirim. 

 Adım 2:   

Daha sonra ana kapsayıcım olan App.js componentimi render eden index.js componentine geliyorum ve ThemeContextProvider’ı buraya import ediyorum. 

index.js

Sonra da App componentimi ThemeContextProvider ile sarmalıyorum. Artık context yapım hazır. ThemeContext.js içerisinde oluşturduğum tüm yapıları, state’leri, fonksiyonları value olarak gönderebilir ve useContext ile istediğim componentte bu verilere erişebilirim. 

 Adım 3:   

Componentlerde useContext ile state’lere ve fonksiyonlara erişiyorum. Header.js içerisinde bana toggleTheme fonksiyonu lazım. Önce ThemeContext’i import ediyorum. Sonra da useContext ile toggleTheme fonksiyonunu alıyorum.

Header.js

Aynı şekilde diğer componentlerde de erişmek istediğim yapılara useContext ile erişiyorum ve istediğim şekilde kullanıyorum. Şimdi diğer componentleri de inceleyelim.

Content.js

SelectedTheme.js

Burada dikkat ettiyseniz SelectedTheme.js App.js in bir alt çocuğu. Yani torunu. Eğer buraya props ile state’leri göndermek isteseydik, önce Content.js‘ye gönderecektik, sonra Content.js‘de yakalayıp, yeniden SelecetedTheme.js‘ye gönderecektik. Orda da yakalayıp kullanacaktık.

Bu derinliğin daha da arttığını düşündüğümüzde, props ile gönderirken en alt katmana ulaşana kadar bütün componentlerden geçmemiz gerekecekti. Ama useContext ile state’leri App.js de kullanıma açıyoruz, daha sonra nerede lazım ise yakalayıp kullanıyoruz.

App.js

 Çıktı:   

react-useContext

Umarım “React useContext Nedir? React useContext Kullanımı” başlıklı yazım sizin için faydalı olmuştur. useContext kullanımı ile ilgili sorunuz olursa yorum kısmından sormayı unutmayın.

Şu yazılar da ilginizi çekebilir.

React Formlar

Happy coding!

Kaynaklar

react.dev

w3schools.com

Yorum Yazın