【问题标题】: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 也会产生相同的结果。我错过了什么?

【问题讨论】:

    标签: redux reducers


    【解决方案1】:

    您缺少开关盒的default

    default: {
      return {
        ...state
      }
    }
    

    如果您忘记这样做,Redux 将不会像一个好孩子一样玩耍!

    或者,您可以在最后显式返回初始状态: If the state passed to the reducer is undefined, you must explicitly return the initial state.

    【讨论】:

    • 有趣的是,这个答案对我有所帮助,因为我正在设置一个对象,但在我的默认值中只返回“状态”。我不知道您需要以与初始状态相同的格式发送默认状态。如果初始状态是数组或字符串等,情况似乎并非如此。
    • 对我来说,这以及语法错误(不完整的赋值行)导致减速器无法正确加载状态。谢谢!
    猜你喜欢
    • 2017-10-15
    • 2019-03-31
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2020-02-04
    相关资源
    最近更新 更多