【发布时间】:2021-02-07 18:18:37
【问题描述】:
Redux 中 Reducer 的一个规则是,我们不应该从我们的 reducer 返回 undefined(任何其他返回值似乎都可以,包括 null)
我只是想了解这背后的原因。是不是因为 Redux 库的构建方式?
【问题讨论】:
标签: reactjs redux react-redux
Redux 中 Reducer 的一个规则是,我们不应该从我们的 reducer 返回 undefined(任何其他返回值似乎都可以,包括 null)
我只是想了解这背后的原因。是不是因为 Redux 库的构建方式?
【问题讨论】:
标签: reactjs redux react-redux
你不能从 reducer 返回 undefined,如果它返回 undefined 那么你会得到一个像这样的错误Uncaught Error: Reducer returned undefined when handling action
我从 redux 文档中得到以下内容:
在初始化应用程序时,可以使用 undefined 作为状态值调用 reducer。如果发生这种情况,我们需要提供一个初始状态值,以便其余的 reducer 代码可以使用
【讨论】:
这就是 redux 库的构建方式。您可以在此处查看它只是检查并抛出错误消息。
在初始化应用程序时,可以使用 undefined 作为状态值调用 reducer。如果发生这种情况,我们需要提供一个初始状态值,以便其余的 reducer 代码可以使用。 Reducers 通常使用 ES6 默认参数语法来提供初始状态:(state = initialState, action)。
在初始渲染时,可以使用 undefined 初始化状态。所以,用你的初始状态来初始化状态是非常重要的。
【讨论】:
这是在combineReducers 中专门进行的安全检查,以避免意外地不返回任何状态:
https://redux.js.org/api/combinereducers#notes
它绝不能返回
undefined。通过提前返回语句很容易错误地执行此操作,因此如果您这样做,combineReducers会抛出,而不是让错误在其他地方表现出来。如果给它的
state是undefined,它必须返回这个特定reducer 的初始状态。根据前面的规则,初始状态也不能是未定义的。使用 ES6 可选参数语法指定它很方便,但您也可以显式检查第一个参数是否为undefined。
【讨论】: