Önemli: Diğer yazılarımla direkt bağlantılı bir yazıdır. İlk olarak bu yazıdan okumaya başladıysanız, eğitim serisine kısaca bir göz atmanızı tavsiye ederim.
Merhabalar.
Bir önceki yazımda Redux Toolkit ile store oluşturmuştuk şimdi Counter.jsx dosyamız içinde bu store’a ulaşıp state güncellemelerini gerçekleştireceğiz.
Kodlarımız aşağıdaki gibi olacak.
import { createSlice, configureStore } from "@reduxjs/toolkit";
const initialState = {
counter: 0,
toggleButton: true,
};
const counterSlice = createSlice({
name: "counter",
initialState,
reducers: {
increment: (state) => {
state.counter += 1;
},
decrement: (state) => {
state.counter -= 1;
},
increaseByFive: (state, action) => {
state.counter += action.payload.value;
},
clear: (state) => {
state.counter = 0;
},
showButton: (state) => {
state.toggleButton = !state.toggleButton;
},
},
});
const store = configureStore({
reducer: counterSlice.reducer,
});
export const counterAction = counterSlice.actions;
export default store;
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import './Counter.css';
import {counterAction} from '../../ReduxToolkitStore/CounterStore';
function Counter() {
const { counter, toggleButton } = useSelector(state => ({
counter: state.counter,
toggleButton: state.toggleButton
}));
const {increment, increaseByFive, decrement, clear, showButton} = counterAction;
const dispatch = useDispatch();
const incrementHandler = () => {
dispatch(increment());
}
const decrementHandler = () => {
dispatch(decrement());
}
const increaseByFiveHandler = () => {
dispatch(increaseByFive({value:5}));
}
const clearHandler = () => {
dispatch(clear());
}
const toggleHandler = () => {
dispatch(showButton());
}
return (
<div className="counter">
<h1>Counter: {counter}</h1>
{
toggleButton && <div className="button-container">
<button onClick={incrementHandler}>
Increase
</button>
<button onClick={decrementHandler}>
Decrease
</button>
<button onClick={increaseByFiveHandler}>
Increase by 5
</button>
<button onClick={clearHandler}>
Clear
</button>
</div>
}
<div className="button-container">
<button onClick={toggleHandler}>
ToggleButton
</button>
</div>
</div>
);
}
export default Counter;
Öncelikle CounterStore sayfasından export ettiğim counterAction’ı buraya import ediyorum. Kendisi reducer fonksiyonlarımın bilgilerini tutuyor.
initialState içinde gönderdiğimiz değerleri bu şekilde yakalayabiliriz.
const { counter, toggleButton } = useSelector(state => ({
counter: state.counter,
toggleButton: state.toggleButton
}));
Böyle kullanmak zorunda değiliz ancak bu işlerimizi kolaylaştırıyor.
const {increment, increaseByFive, decrement, clear, showButton} = counterAction;
const incrementHandler = () => {
dispatch(increment());
}
const decrementHandler = () => {
dispatch(decrement());
}
const increaseByFiveHandler = () => {
dispatch(increaseByFive({value:5}));
}
const clearHandler = () => {
dispatch(clear());
}
const toggleHandler = () => {
dispatch(showButton());
}
Burada şuna dikkat kesilebiliriz.
const increaseByFiveHandler = () => {
dispatch(increaseByFive({value:5}));
}
Action ile bir payload göndermemiz gerekiyordu. Bunu value değişkeniyle gönderdim. Bu değeri CounterStore.js’de yakalarken aşağıdaki gibi yakaladım.
increaseByFive: (state, action) => {
state.counter += action.payload.value;
},
action.payload kısmı standart geri kalan kısım değişken ismidir. Eğer tek bir değişken değer göndericeksek direkt değeri yazabiliriz. Burada çağırırken sadece action.payload yazmamız yeterli olur.
<div className="counter">
<h1>Counter: {counter}</h1>
{
toggleButton && <div className="button-container">
<button onClick={incrementHandler}>
Increase
</button>
<button onClick={decrementHandler}>
Decrease
</button>
<button onClick={increaseByFiveHandler}>
Increase by 5
</button>
<button onClick={clearHandler}>
Clear
</button>
</div>
}
<div className="button-container">
<button onClick={toggleHandler}>
ToggleButton
</button>
</div>
</div>
Böylece kodlamamız bitti.
Her şey istediğim gibi çalışıyor.
Bir sonraki yazımda görüşmek üzere.
Selamlar, bu yazımda Oly'nin 1 hafta boyunca olduğu GS iğnesi, yaşanan değişimleri anlatmaya çalışacağım. PCR…
Selamlar, bu yazımda Hemogram ve Biyokimya sonuçlarımızı göstermek için İÜCHH'ne tekrar gidişimizi ve sonrasını anlatacağım.…
Selamlar, bu yazımda GS iğnesine başlama kararımızı ve Oly’de bu süreçte nelere dikkat ediyor, neler…
Selamlar, bu yazımda İÜCHH'deki tedavi sürecimiz ve sonrasında yaşananlardan bahsetmeye çalışacağım. 20.06.2025 Cuma günü saat…
Eve Dönüş ve İlk Şüpheler 18 Haziran Perşembe saat 23 sularında İstanbul’daki evimize giriş yaptık.…
9 Haziran Pazartesi günü Aydın’daki sürecimiz bitti ve Antalya yolculuğumuz başladı. Saat 11 gibi yola…