Redux Toolkit中能否从Slice命名导出Reducer?导出报错解决
问题原因与修复方案
核心错误:reducer导出方式错误
你遇到的No reducer provided for key "cart"错误,根源是错误使用了解构赋值导出reducer。
cartSlice.reducer本身就是一个完整的reducer函数,不是带有cartReducer属性的对象。你写的export const {cartReducer} = cartSlice.reducer;相当于从一个函数里解构不存在的cartReducer属性,结果必然是undefined,导致store找不到有效的reducer。
修复步骤
修改cartSlice.js里的reducer导出代码:
把原来的:
export const {cartReducer} = cartSlice.reducer;
改成:
export const cartReducer = cartSlice.reducer;
这样就能正确导出命名为cartReducer的reducer函数,store里的cart: cartReducer就能正常识别了。
额外提醒:修复remove reducer的潜在bug
你的remove reducer里的state = state.filter(...)不会生效。Redux Toolkit的immer只能追踪直接修改state的操作(比如push、splice),或者返回新的state值。正确写法应该是直接返回过滤后的数组:
remove(state, action) { return state.filter((item) => item.id !== action.payload); }
这样才能正确更新cart的状态。
内容的提问来源于stack exchange,提问作者Fuaad
相关产品推荐
相关产品推荐

