CodeBlanks Logo Icon CodeBlanks

Özet - State yönetimi

createSlice, useDispatch ve useSelector'ı birleştirerek bir sayaç yazarsın.

Özet - State yönetimi

Bu grupta Redux, Redux Toolkit, createSlice, useDispatch ve useSelector öğrendik. configureStore store oluşturur; createSlice reducer ve action creator üretir. useDispatch action gönderir; useSelector state okur.

Şimdi bunları birleştirip çalışan bir sayaç yazacağız. Önce slice tanımlanır, sonra store kurulur, son olarak bileşen dispatch ile artırır ve useSelector ile değeri gösterir. Bu kalıp tüm Redux uygulamalarının iskeletidir.

Uygulama Özet - Counter slice

counterSlice tanımla. createSlice ile name: 'counter', initialState: { value: 0 }, reducers: { increment, decrement }. Reducer'ı export default, action'ları export const ile dışa aktar.

Başlangıç kodu

App.js
import { createSlice } from '@reduxjs/toolkit';

// counterSlice'i tanımla

Örnek çözüm

App.js
import { createSlice } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: { value: 0 },
  reducers: {
    increment: (state) => { state.value += 1; },
    decrement: (state) => { state.value -= 1; },
  },
});

export default counterSlice.reducer;
export const { increment, decrement } = counterSlice.actions;

Uygulama Özet - Counter bileşeni

Counter bileşenini tamamla. useSelector((state) => state.counter.value) ile değeri oku. useDispatch ile dispatch(increment()) çağır. <Text>{count}</Text> ve artırma butonu döndür.

Başlangıç kodu

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

export function Counter() {
  // count ve dispatch al; Text ve Button döndür

  return null;
}

Örnek çözüm

App.js
import React from 'react';
import { Button, Text, View } from 'react-native';
import { useSelector, useDispatch } from 'react-redux';
import { increment } from './counterSlice';

export function Counter() {
  const count = useSelector((state) => state.counter.value);
  const dispatch = useDispatch();

  return (
    <View>
      <Text>{count}</Text>
      <Button title="Artir" onPress={() => dispatch(increment())} />
    </View>
  );
}

Soru ve cevaplar

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

1 Akış parçalarını eşle

Kavram Anlamı
createSlice Slice üretir
configureStore Store kurar
useDispatch Action gönderir
useSelector State okur

2 Slice name değerini yaz

Soru
const counterSlice = createSlice({
  name: '____',
  initialState: { value: 0 },
  reducers: {}
});
Cevap
const counterSlice = createSlice({
  name: 'counter',
  initialState: { value: 0 },
  reducers: {}
});

Açıklama: counter yazılır; createSlice'ın name alanı budur.

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