Redux Toolkit দিয়ে Raw Redux এর তুলনায় অনেক কম কোড লিখে একই কাজ করা যায়।
ধাপ- 1,2,3,4: createSlice
counterSlice.js
const { createSlice } = require("@reduxjs/toolkit");
// initial state
const initialState = {
count: 0,
};
// createSlice
const counterSlice = createSlice({
name: "counter",
initialState,
reducers: {
increment: (state, action) => {
state.count++;
},
decrement: (state, action) => {
state.count--;
},
},
});
module.exports = counterSlice.reducer;
module.exports.counterActions = counterSlice.actions;
⚠️কয়েকটা বিষয় লক্ষনীয়
createSlice
এর মধ্যে reducers
, not reducer
।
reducers
অবজেক্টের প্রোপার্টিগুলোই আসলে action creator হিসেবে কাজ করবে। যেহেতু action creator একাধিক হতে পারে তাই reducers
।
module.exports.counterActions = counterSlice.actions
; এখানে counterActions
এটা যেকোন নামেই হতে পারবে। এটাই হচ্ছে reducers/Actions
এর নাম এবং এটা একটা অবজেক্ট। action dispatch
করার সময় counterActions.actionName
কে dispatch
করতে হবে।
আবার, অপরদিকে module.exports = counterSlice.reducer
এখানে কিন্তু counterSlice.reducer
কারণ, একটা Slice
থেকে সব কিছু হিসাব নিকাশ করে একটা reducer
তৈরি হবে।
ধাপ-৫: Store
const { configureStore } = require("@reduxjs/toolkit");
const counterReducer = require("../../redux/counter/reducer");
const dynamicCounterSlice = require("../features/dynamicCounter/dynamicCounterSlice");
const store = configureStore({
reducer: {
counter: counterReducer,
dynamicCounter: dynamicCounterSlice,
},
});
module.exports = store;
configureStore
automatically Redux DevTools এবং redux-thunk setup করে দেয়। Usage Examples
Simple Counter
const store = require("./app/store");
const { counterActions } = require("./features/counter/counterSlice");
// subscribe to state changes
store.subscribe(() => {
console.log(store.getState());
});
// dispatch actions
store.dispatch(counterActions.increment());
store.dispatch(counterActions.increment());
store.dispatch(counterActions.decrement());
Simple counter — payload ছাড়া increment/decrement।
Raw Redux vs RTK
RTK এর সুবিধা: - 90% কম boilerplate code - Immer দিয়ে safe mutations (
state.count++
) - Automatic action creators - Built-in DevTools ও thunk support Last updated on