为啥我的 Redux reducer 认为我的状态是未定义的?
Posted
技术标签:
【中文标题】为啥我的 Redux reducer 认为我的状态是未定义的?【英文标题】:Why does my Redux reducer think my state is undefined?为什么我的 Redux reducer 认为我的状态是未定义的? 【发布时间】:2016-10-27 05:17:57 【问题描述】:我相信我正在逐行复制 Todo 教程,我收到此错误:
错误:Reducer“addReport”在初始化期间返回未定义。 如果传递给减速器的状态未定义,则必须显式 返回初始状态。初始状态可能不是未定义的。
这是我的 addReport 减速器:
const addReport = (state = [], action) =>
console.log(state)
switch (action.type)
case ADD_NEW_REPORT:
return [...state,
addReports(undefined, action)
]
我添加了日志语句,并且可以验证它是否返回一个空数组。即使将 state 设置为 1 也会产生相同的结果。我错过了什么?
【问题讨论】:
【参考方案1】:您缺少开关盒的default
。
default:
return
...state
如果您忘记这样做,Redux 将不会像一个好孩子一样玩耍!
或者,您可以在最后显式返回初始状态:
If the state passed to the reducer is undefined, you must explicitly return the initial state.
【讨论】:
有趣的是,这个答案对我有所帮助,因为我正在设置一个对象,但在我的默认值中只返回“状态”。我不知道您需要以与初始状态相同的格式发送默认状态。如果初始状态是数组或字符串等,情况似乎并非如此。 对我来说,这以及语法错误(不完整的赋值行)导致减速器无法正确加载状态。谢谢!以上是关于为啥我的 Redux reducer 认为我的状态是未定义的?的主要内容,如果未能解决你的问题,请参考以下文章