You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redux Selector中state属性名是否必须与store注册的reducer名一致?

Redux属性名匹配规则问题解答

这是Redux的强制规则,而非可选的约定规范,底层逻辑如下:

  1. 当你调用configureStore传入reducer配置对象时,Redux会自动把该对象的每一个键,作为根state对象的顶层属性,属性值就是对应reducer维护的状态切片。
    你给出的示例里使用了对象简写语法:
const store = configureStore({
  reducer: {
    todoReducer,
  },
});

等价于显式声明键值对:

const store = configureStore({
  reducer: {
    todoReducer: todoReducer,
  },
});

也就意味着根state上会挂载一个名为todoReducer的属性,存储待办相关的所有状态。
2. Selector的作用是从根state中读取对应属性,如果你写的属性名和reducer配置中的键名不匹配,读取到的值就是undefined,后续对undefined调用.map方法自然会抛出类型错误。

如果你希望调整selector的写法,只需要同步修改reducer配置的键名即可,比如把键名简化为更易读的业务相关命名:

// store 定义调整
const store = configureStore({
  reducer: {
    todos: todoReducer,
  },
});

// 对应selector同步修改为
export const selectTodoSlice = (state) => state.todos;

内容的提问来源于stack exchange,提问作者Nima Zarei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:54:05