Как увидеть state внутри reduce
Если распечатать state внутри редюсера, то видим какой-то странный объект вида: Proxy {i: 0, A: {…}, P: false, I: false, D: {…}, …}
Ответы
Ivan Gagarinov
27 сентября 2022
Proxy объект - это особый объект, который позволяет отслеживать изменения объекта и вызывать обработчики на изменения. Состояние (state) в редюсерах остаётся неизменяемым (его нельзя мутировать) и редюсер должен возвращать новое состояние. Но redux-toolkit, с помощью объекта Proxy, даёт возможность работать с состоянием как с обычным объектом и мутировать его, то есть мы можем например переназначать свойства:
state.todos = newTodos;
Чтобы распечатать состояние, в redux-toolkit встроена функция current()
, она позволяет получить текущее состояние из прокси-объекта:
import { createSlice, current } from '@reduxjs/toolkit';
const slice = createSlice({
name: 'todos',
initialState: [],
reducers: {
addTodo: (state, action) => {
state.push(action.payload);
// Выводим в консоль обновлённое состояние
console.log(current(state));
},
},
});
50
1