Это старая версия документа!
Redux Toolkit - Керування стейтами (новий правильний варіант)
redux-toolkit це офіційна бібліотека для ефективної розробки з використанням Redux, яка призначена для стандартизації та спрощення написання логіки Redux.
Встановлення
Використовуючи Redux Toolkit, немає необхідності додавати в проект пакет redux, крім випадків, коли вам необхідна функція combineReducers(). Достатньо встановити @reduxjs/toolkit для написання логіки Redux та react-redux для зв'язку стора з компонентами.
npm install @reduxjs/toolkit
Створюємо структуру файлів (приклад)
- /сomponents/redux/
- store.jsx - сховище верхнього рівня що буде керувати усіма підлеглими
- contactsSlice.jsx - підлегле сховище що керує значенніми (стейтами) повязаними з контактами
- filtersSlice.jsx - підлегле сховище що керує стейтами повязаними з фільтрами
Конфігурація сховища configureStore
// src/redux/store.js
import { configureStore } from "@reduxjs/toolkit";
import { rootReducer } from "./reducer";
const store = configureStore({
reducer: rootReducer,
});
Створення одночасно редюсера и єкшена createSlice
Краще викорситовувати цей метод бо одночасно тсворить і редюсер і єкшен. Тут вже не треба притримуватись то іммутабельного принципу зміни бо усе одлно всередині він буде перетворений у іммутабельний
import { createSlice } from "@reduxjs/toolkit";
const tasksSlice = createSlice({
name: "tasks",
initialState: [],
reducers: {
addTask(state, action) {
state.push(action.payload);
},
deleteTask(state, action) {
const index = state.findIndex(task => task.id === action.payload);
state.splice(index, 1);
},
toggleCompleted(state, action) {
for (const task of state) {
if (task.id === action.payload) {
task.completed = !task.completed;
break;
}
}
},
},
});
const { addTask, deleteTask, toggleCompleted } = tasksSlice.actions;
const tasksReducer = tasksSlice.reducer;