我想使用下面的代码重置状态。但我不知道为什么它给我错误'initialState'是没有定义。请帮助我解决这个问题。谢谢。
import { createSlice } from '@reduxjs/toolkit';
const cartSlice = createSlice({
name: 'cart',
initialState:
// JSON.parse(localStorage.getItem('item')) ||
{
products: [],
quantity: 0,
total: 0,
},
reducers: {
addProduct: (state, action) => {
state.products.push(action.payload);
state.quantity += 1;
state.total += action.payload.price * action.payload.quantity;
// localStorage.setItem('item', JSON.stringify(state));
},
deleteItem: (state, action) => {
state.quantity -= 1;
state.total -= action.payload.price * action.payload.quantity;
},
reset: (state) => {
state = initialState;
},
},
});
export const { addProduct, reset, deleteItem } = cartSlice.actions;
export default cartSlice.reducer;
4条答案
按热度按时间rqqzpn5f1#
state = something
从不在RTK减速器中工作。您可以修改变量state
中的对象,但不能将变量state
重新分配给新对象。执行
return something
而不是state = something
。这在使用immer
的Writing Reducers文档页中进行了描述。g6ll5ycj2#
必须手动声明初始状态才能重置状态。
gk7wooem3#
您根本没有初始化initialState。您可以将initialState从切片中提取出来,它应该可以工作。
f1tvaqid4#
如果您正在使用Redux工具包...这就是您如何做的...。