Redux mapDispatchToProps方法调用正常但state未正确返回为props问题
问题根因
- Redux 初始化阶段会自动派发内部的
@@INIT类型 action,该 action 不会匹配你定义的GET_BOOKS分支,会直接进入default逻辑。你在 default 分支返回了空对象{},直接覆盖了初始设置的initialState,且state = initialState这个默认赋值仅在 state 为undefined时生效,第一次返回空对象后,后续模块 state 就固定为空,就算触发GET_BOOKS也只会返回空对象的扩展结果,自然无法拿到 books 数组。
修复方案
修改 bookReducer 的 default 分支逻辑,默认返回当前传入的 state 即可,这是 Redux reducer 的标准写法要求:
const bookReducer = (state = initialState, action) => { switch (action.type) { case GET_BOOKS: return { ...state, }; default: // 不要返回空对象,返回现有state即可 return state; } };
补充说明
如果你是测试阶段特意将 default 分支设置为返回空对象,测试完成后记得改回标准写法,所有未被显式匹配的 action 都应该保持现有 state 不变,避免状态被意外重置。
内容的提问来源于stack exchange,提问作者Gazi
相关产品推荐
相关产品推荐

