CodeBlanks Logo Icon CodeBlanks

useSelector

useSelector ile state okumayı öğrenirsin.

useSelector

useSelector, store'daki state'i okumak için kullanılan hook'tur. Bir seçici (selector) işlev alır: const count = useSelector((state) => state.counter). Bu işlev, store state'ini alır ve ilgili parçasını döndürür. State değiştiğinde bileşen yeniden render edilir.

Seçici işlevin döndürdüğü değer, bileşendeki değişken olur. Sadece gerekli alanı seçmek performans açısından önemlidir: (state) => state.counter.value yerine tüm state.counter'ı döndürmek, daha geniş bir yeniden render tetikler. İnce seçici yazmak, gereksiz render'ları azaltır.

Seçici yazımı

Seçici işlev, okumak istediğin alanı döndürür. state.counter sayaç slice'ının tamamıdır; state.counter.value ise yalnızca değeri verir. İkincisi daha verimlidir; çünkü yalnızca değer değiştiğinde render tetiklenir. İlk kullanımda slice'ın başka bir alanı değişse bile render olur.

Bileşende const count = useSelector((state) => state.counter.value) yazıp count'u <Text>{count}</Text> içinde gösterirsin. State her değiştiğinde useSelector yeni değeri döner; bileşen güncellenir. Bu kalıp tüm Redux okumalarında tekrar eder.

Uygulama CounterValue yaz

CounterValue bileşenini tamamla. useSelector'u react-redux'tan içe aktar. const count = useSelector((state) => state.counter.value) ile değeri oku. <Text>{count}</Text> döndür.

Başlangıç kodu

App.js
import React from 'react';
import { Text } from 'react-native';

export function CounterValue() {
  // count'u useSelector ile oku ve Text içinde göster

  return null;
}

Örnek çözüm

App.js
import React from 'react';
import { Text } from 'react-native';
import { useSelector } from 'react-redux';

export function CounterValue() {
  const count = useSelector((state) => state.counter.value);

  return <Text>{count}</Text>;
}

Soru ve cevaplar

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

1 useSelector parçalarını eşle

Kavram Anlamı
useSelector State okur
(state) => state.counter Seçici işlev
state.counter Sayaç değeri
re-render State değişince olur

2 Seçici işlevi yaz

Soru
const count = useSelector((state) => state.____.value);
Cevap
const count = useSelector((state) => state.counter.value);

Açıklama: counter yazılır; slice adıyla state'in parçasına erişilir.

3 İnce seçici neden tercih edilir?

  • Gereksiz render'ları azaltır
  • Stilleri değiştirir
  • Animasyonu hızlandırır
  • Token'ı siler Doğru cevap

Açıklama: İnce seçici yalnızca ilgili alan değişince render tetikler.

İleri seviye bölümündeki tüm dersler