CodeBlanks Logo Icon CodeBlanks

Slice

createSlice ile state slice öğrenirsin.

createSlice

createSlice, RTK'nın en önemli işlevidir. Bir slice; name, initialState ve reducers alanlarını içeren bir nesnedir. RTK, reducers içindeki her işlev için otomatik olarak action creator ve action type üretir. Böylece ayrı dosyalara gerek kalmaz.

Örnek: const counterSlice = createSlice({ name: 'counter', initialState: 0, reducers: { increment: (state) => state + 1 } }). counterSlice.actions.increment bir action creator'dır; counterSlice.reducer ise reducer'ın kendisidir. Slice, state'in bir parçasını ve onu değiştiren işlevleri bir arada tutar.

reducers alanı

reducers nesnesi, state'i değiştiren işlevleri listeler. Her işlev iki parametre alır: state ve action. RTK, immer kütüphanesini kullanarak state'i doğrudan değiştirebileceğin izlenimini verir; arka planda yine değiştirilemez (immutable) güncelleme yapar.

Örnek: increment: (state) => state + 1 veya addBy: (state, action) => state + action.payload. İkinci örnekte action.payload, dispatch sırasında gönderilen değeri taşır. RTK bu işlevi addBy(value) şeklinde çağırabilen bir action creator'a sarar.

Uygulama counterSlice yaz

Boş dosyayı tamamla. createSlice'ı @reduxjs/toolkit'ten içe aktar. counterSlice tanımla: name: 'counter', initialState: 0, reducers: { increment: (state) => state + 1, decrement: (state) => state - 1 }. export default counterSlice.reducer ve export const { increment, decrement } = counterSlice.actions yaz.

Başlangıç kodu

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

// counterSlice'i tanımla ve dışa aktar

Örnek çözüm

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

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

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

Soru ve cevaplar

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

1 Slice adını yaz

Soru
createSlice({
  name: '____',
  initialState: 0,
  reducers: {}
})
Cevap
createSlice({
  name: 'counter',
  initialState: 0,
  reducers: {}
})

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

2 Slice parçalarını eşle

Kavram Anlamı
name Slice adı
initialState Başlangıç değeri
reducers Değiştirme işlevleri
actions Action creator'lar

3 createSlice ne üretir?

  • Hem reducer hem action creator
  • Yalnızca reducer Doğru cevap
  • Yalnızca store
  • Yalnızca style

Açıklama: createSlice hem reducer hem action creator üretir.

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