Context API Nedir?

Context API Nedir?

React'ta Context API, bileşenler arasında veri paylaşımını sağlayarak bağımlılık yönetimini kolaylaştırır Özellikle çapraz kesimli uygulamalarda temaların merkezi bir yerden yönetimini sağlar createContext fonksiyonu ile tema context'i oluşturulur, Provider bileşeni ile paylaşılır ve ThemeProvider bileşeni ile temalar belirlenir Kullanıcıya kişiselleştirme imkanı sunarak, estetik ve kullanım deneyimi açısından avantaj sağlar

Context API Nedir?

React, geliştiricilere uygulamalarında bağımlılık yönetimini materyalize etmek için Context API sunar. Bu API, React ağacı boyunca herhangi bir bileşende durumun geçmesini gerektirmeden verileri paylaşmanızı sağlar. Böylece, istediğiniz bölgede öğelerin paylaşılması ve kendi bağımlılık yönetimini yapabilme imkanı sunar.

Context API, özellikle çapraz kesimli uygulamalar gibi birçok bileşene sahip uygulamalarda verileri paylaşmak için kullanılır. Ayrıca Context API, bir API kullanarak verileri paylaşmak isteyen ancak Redux kullanmak için çok küçük bir uygulama olan geliştiriciler tarafından da kullanılabilir.


Context API ile Tema Yönetimi

Context API her ne kadar veri yönetimi için daha çok kullanılsa da, aynı zamanda tema yönetimi için de oldukça kullanışlı bir araçtır. Context API kullanarak tema yönetimi yapmak, uygulamaların görünümünü büyük ölçüde değiştirebilir. Bu sayede, uygulamaların daha estetik bir görünüme sahip olması mümkün hale gelir.

Bir tema context'i oluşturmak oldukça basit ve kullanışlıdır. İlk olarak, bir tema context'i oluşturmak için createContext() fonksiyonu kullanılır. Daha sonra Provider bileşeni kullanılarak, tema context'i sağlanır ve diğer bileşenler tarafından erişilebilir hale getirilir. Provider bileşeni, kullanılan tema bilgisini içeren bir nesneye sahip olmalıdır.

ThemeProvider bileşeni ise, oluşturulan tema context'ini sunmak ve ona erişimi kolaylaştırmak için kullanılır. ThemeProvider bileşeni, provider bileşeninin içerisinde yer alır ve kullanıcının tercihlerine göre tema seçimini yapar.

  • createContext() fonksiyonu ile bir tema context'i oluşturulur.
  • Provider bileşeni kullanılarak, tema context'i sağlanır ve diğer bileşenler tarafından erişilebilir hale getirilir.
  • ThemeProvider bileşeni, oluşturulan tema context'ini sunmak ve ona erişimi kolaylaştırmak için kullanılır.

Bu işlemler sayesinde, uygulamanın temaları rahatlıkla yönetilebilir. Ayrıca, kullanıcının yaptığı tercihler kolayca kaydedilebilir ve uygulamanın yeniden başlatılması gerektiğinde bile kaydettiği tercihlerini kaybetmez.

Context API ile tema yönetimi yapmak, uygulamalara daha estetik bir görünüm kazandırmanın yanı sıra, kullanıcılara da tercihlerine göre tema seçme fırsatı sunar. Bu sayede, kullanıcılar uygulamaları daha kişiselleştirir ve daha keyifli bir kullanım deneyimi elde ederler.


Tema Yönetimi için Context Oluşturma

React uygulamalarında, tema yönetimi için Context API kullanılabilir. Bu sayede, uygulamanın renk ve diğer temel özellikleri gibi görünümlerine ilişkin yapılandırmalarının merkezi bir yerden yönetilmesi sağlanabilir. Tema yönetimi için bir context oluşturmak oldukça kolaydır.

Context oluşturmak için, createContext() metodu kullanılır. Bu metod, yeni bir tema context'i oluşturur. Tema context'imiz genellikle bir JavaScript dosyasında oluşturulur ve uygulama içinde birden fazla bileşen tarafından kullanılabilir.

Örnek olarak, aşağıdaki kod satırlarını kullanarak bir tema context'i oluşturabiliriz:

```import {createContext} from 'react';

const ThemeContext = createContext('light');export default ThemeContext;```

Yukarıdaki kod, bir tema context'i oluşturur ve 'light' adında bir değer içerir. Bu değer, application içinde varsayılan bir tema değeridir.

Tema context'imize ek olarak, kullanıcı tercihleri gibi yerel ayarlar da kaydedilebilir. Bu özellikler kullanıcıların uygulamayı kendilerine göre yapılandırmasına olanak tanıyarak, özelleştirmeyi artırır.

Context API'nin birçok faydalı özelliği bulunmaktadır ve tema yönetimi için de oldukça uygun bir yöntemdir. Ayrıca, bu yapılandırma yöntemi sayesinde çoklu bileşenlerin temalarını merkezi bir yerden yönetmek de kolaylaşır.


ThemeProvider Kullanımı

ThemeProvider, Context API'yi kullanarak bir tema context'i sağlamak için kullanılan bir bileşendir. Bu bileşen, tüm alt bileşenlerinde paylaşılan özelliklerin belirlendiği yerdir. Tema context'i oluşturulduktan sonra, tüm alt bileşenleri onu kullanarak temaları belirleyebilirler.

Bir tema context'i oluşturmak için, createContext() fonksiyonunu kullanarak bir context nesnesi oluşturun. Daha sonra, ThemeProvider bileşenini kullanarak bu context nesnesi ile bir tema nesnesi sağlamalısınız. Bu tema nesnesi, alt bileşenler tarafından kullanılacak olan ortak öğelerin tanımlandığı yerdir.

ThemeProvider, theme adı verilen bir prop alır. Bu prop, tüm bileşenlerin temalarını belirlemek için kullanılacak olan tema nesnesidir. Örneğin, aşağıdaki kod örneğinde, bir tema nesnesi oluşturuyor ve bu tema nesnesini Provider'a geçiriyoruz:

import React from 'react';import { ThemeProvider } from 'styled-components';const theme = {  colors: {    primary: '#0070f3',    secondary: '#05f',    danger: '#f00',  },};function MyApp({ Component, pageProps }) {  return (    <ThemeProvider theme={theme}>      <Component {...pageProps} />    </ThemeProvider>  );}export default MyApp;
  • createContext(): createContext() fonksiyonu kullanılarak bir tema context'i oluşturulur.
  • ThemeProvider: ThemeProvider bileşeni, sağladığınız tema nesnesini context'e iletmek için kullanılır.
  • theme: theme adı verilen prop, bir tema nesnesi sağlar. Bu, bileşenlerin temalarını belirleyen özelliklerin tanımlandığı yerdir.

ThemeProvider kullandığımızda tüm alt bileşenleri temaları kullanabilecekler ve bu bileşen ile temaların yönetimi kolaylaştırılmış olacaktır. Böylece, herhangi bir alt bileşende yapılan bir değişiklik tüm bileşenlerde etkili olacaktır.


Kullanıcı Tercihlerinin Kaydedilmesi

Context API ile tema yönetimi yaparken, kullanıcının tercihlerini kaydetmek ve sonraki oturumlarda kullanmak oldukça faydalıdır. Kullanıcı tercihlerini kaydetmek için bir state değişkeni oluşturmak ve bu değişkeni bir localStorage veya backend veritabanına kaydetmek gerekmektedir. Bu sayede, kullanıcıların bir sonraki ziyaretlerinde tercihlerinin otomatik olarak yüklenmesi sağlanabilir.

Bunun için, bir state değişkeni oluşturulmalıdır. Örneğin:

const [theme, setTheme] = useState("light");

Ardından, bir useEffect fonksiyonu oluşturulmalı ve bu fonksiyon içinde localStorage veya backend veritabanı kullanılarak state değişkeninin değeri kaydedilmelidir. Örneğin:

useEffect(() => {    localStorage.setItem("theme", theme);}, [theme]);

Bu kodda, useEffect fonksiyonu, theme state değişkeni her değiştiğinde tetiklenecek ve localStorage aracılığıyla temayı kaydedecektir. Böylece, bir sonraki oturumda, kullanıcının tercihleri otomatik olarak yüklenecektir.

Bununla birlikte, kullanıcı tercihlerini backend veritabanında saklamak daha güvenli bir seçenek olabilir. Bu durumda, useEffect fonksiyonu içinde API çağrıları kullanılarak veritabanına kullanıcı tercihleri gönderilmelidir. Bu yöntem, birden çok cihazda kullanıcı tercihlerinin senkronize edilmesine olanak tanır.


Theme Context'in Kullanılması

Tema context'i, temaya bağlı olan bileşenlerin kendisini seçmesi için bir yol sağlar. Context API'i kullanarak, bir bileşen, bileşen ağacının herhangi bir yerinde olabilirken, belirli bir tema context'i alabilir. Bu, yönetimi kolaylaştırır ve uygulamanın daha ölçeklenebilir olmasını sağlar.

Context API'i kullanarak oluşturulan temalar, tema bileşenleri tarafından kullanılabilir. Bir bileşen, tema değiştiğinde bile kullanılabilir ve gerektiğinde uygun bir şekilde güncellenebilir.

Bir React bileşeni temasını değiştirmek istediğinde, ThemeProvider kullanarak bir tema context'i sağlanır. Bu tema context'i, bileşenin altındaki tüm bileşenlere yayılır ve bileşenler bu tema context'ini kullanır.

Bir bileşen, temasını değiştirdiğinde, ThemeProvider bileşeni yeniden renderlanmalıdır. Bu, tüm bileşenlerin yeni tema context'ini kullanarak yeniden renderlanmasına neden olur ve teması değişen bileşenler güncellenir.


Uygulama Örneği

Context API, React uygulamalarında tema yönetimi alanında oldukça kullanışlı bir teknolojik yardımcıdır. Context API kullanarak bir tema context'i oluşturmak üzere kod yazılabilir ve herhangi bir bileşenden bu temayı kullanmak mümkündür.

Uygulama örneği, bu konuda kullanılabilecek bir öğretici niteliğinde olacaktır. Örneğin, bir tesis yönetim uygulaması düşünelim. Uygulamada birden fazla sayfa, formlar ve bileşenler vardır. Bunların hepsi tek bir tema altında birleştirilmelidir. Bu işlem için öncelikle bir tema context'i oluşturulmalıdır.

Uygulama örneği için öncelikle kod örnekleri kullanarak bir ThemeProvider oluşturulur ve gerekli bileşenler bu ThemeProvider içine eklenir. Bu sayede, tüm uygulama bileşenleri tek bir yerden temalarını alabilecektir.

Bu örnekte, açılır menü, grafikler, tablolar, formlar ve ana sayfa gibi sayfanın birçok kısmını kapsayacak şekilde tema kullanılabilir. Kullanıcı tercihleri, bir context içinde saklanarak tüm uygulama tarafından kullanılabilir. Bu sayede, kullanıcı herhangi bir tema için tercihlerini kaydedebilir ve uygulama, kullanıcının tercih ettiği tema ile uyumlu hale gelecektir.

Bir diğer avantaj, etkileşimli işlemler yapıldığında bile, sayfaların hızlı bir şekilde yüklenmesidir. Context API ile, yalnızca gerekli olan temayı çağırmak mümkündür. Bu sayede, yapılan her işlemde yalnızca gerekli olan kodlar çalışır ve sayfa hızı artar.

Uygulama örneği, herhangi bir işletme için oldukça faydalı bir bilgi sunar. Hem tema yönetimi hem de kullanıcının tercihlerini kaydetmek ve uygulama içinde kullanmak gibi birçok faydalı özellik sunar.


Kod Örnekleri

Uygulamanız için bir tema context'i tasarlamanın birçok yolu vardır. Aşağıdaki örnekler, context API'yi kullanarak nasıl bir tema context'i oluşturabileceğinizi ve kullanabileceğinizi gösterir.

Örneğin, aşağıdaki kod bir tema context'i oluşturmanıza yardımcı olur:

```import { createContext } from 'react';

const ThemeContext = createContext('light');

export default ThemeContext;```

Bu örnek, varsayılan tema rengi olarak "light" değerini kullanır, ancak istediğiniz herhangi bir değeri ayarlayabilirsiniz.

Bir ThemeProvider oluşturmak için aşağıdaki örneği kullanabilirsiniz:

```import React, { useState } from 'react';import ThemeContext from './ThemeContext';

const ThemeProvider = ({ children }) => { const [theme, setTheme] = useState('light');

const toggleTheme = () => { setTheme(theme === 'light' ? 'dark' : 'light'); };

return ( {children} );};

export default ThemeProvider;```

Bu örnekte, tema rengi ve tema değiştirme fonksiyonu bir obje içinde barındırılır ve ThemeProvider ile sağlanır. Bu şekilde, provider'ı kullanarak bir bileşeni sarabilirsiniz.

Son olarak, aşağıdaki örnek temasınızı kaydetmek ve tekrar kullanmak için bir yolu göstermektedir:

```import React, { useState, useEffect } from 'react';import ThemeContext from './ThemeContext';

const App = () => { const [theme, setTheme] = useState('light');

useEffect(() => { const savedTheme = localStorage.getItem('theme');

if (savedTheme) { setTheme(savedTheme); } }, []);

const handleThemeChange = () => { setTheme(theme === 'light' ? 'dark' : 'light'); };

useEffect(() => { localStorage.setItem('theme', theme); }, [theme]);

return ( {/* Your app code goes here */} );};

export default App;```

Bu örnekte, kullanıcının tema değişikliklerini yerel depolamada saklamak için useEffect kancaları kullanılır. Bu, kullanıcının sonraki ziyaretlerinde tercihlerinin kaydedilmesini sağlar.

Kod örnekleri kendinize göre değiştirilebilir ve ihtiyaçlarınıza göre uyarlanabilir.


Uygulamanın Çalışması

Şimdi, önceden bahsedilen kod örneklerini kullanan bir uygulama içerisinde Context API ile temasının nasıl değiştirileceğini inceleyeceğiz. Uygulama, birkaç farklı bileşen içerir ve her bileşen üzerinden temayı değiştirebilirsiniz.

Örneğin, sayfanın sol tarafında yer alan bir menü bileşeni var. Menu bileşeni, temasını değiştirmek isteyen kullanıcılar için bir seçenek sunar. Bu bileşen, mevcut temasına göre farklı renk seçeneklerine sahip olan bir modül içerir.

Bir diğer bileşen ise uygulama ana bileşenidir. Bu bileşen, uygulamanın çoğunu kaplayan geniş bir alana sahiptir ve seçilen temayı uygulamanın bütününe uygular. Örneğin, kullanıcının seçtiği temaya göre, arka plan rengi ve yazı tipi değişebilir.

Aşağıdaki tablo, uygulamadaki farklı bileşenlere karşılık gelen tema ayarlarını göstermektedir:

Bileşen Tema Ayarı
Menü Renk seçenekleri
Uygulama Ana Bileşeni Arka plan rengi, yazı tipi

Uygulamanın çalışma şekli, kullanıcının menü bileşeninde bir tema seçmesiyle başlar. Seçilen tema, uygulama ana bileşenindeki tema ayarlarına yansır ve kullanıcı tercihleri kaydedilir. Bu sayede, kullanıcılar istedikleri zaman farklı bir tema seçebilirler ve uygulama otomatik olarak seçilen temayı uygular.

Örnek uygulamanın çalışması ve kullanıcıların temasını nasıl değiştirebilecekleri hakkında daha detaylı bilgi edinmek için aşağıdaki görsellere bakabilirsiniz:

  • Menü bileşeni
  • Uygulama ana bileşeni
  • Tema ayarları