【发布时间】:2020-08-20 08:50:18
【问题描述】:
The docs for the useReducer hook 有点模糊:
接受
(state, action) => newState类型的reducer,并返回与dispatch方法配对的当前状态。 (如果您熟悉 Redux,那么您已经知道它是如何工作的。)
The Redux docs 然后说
reducer 保持纯净非常重要。你应该永远不要在 reducer 中做的事情:
- 改变它的论点;
- 执行 API 调用和路由转换等副作用;
- 调用非纯函数,例如
Date.now()或Math.random()。
但我没有使用 Redux。 React 文档似乎没有说减速器必须是纯的。只是那种模糊的说法,知道 Redux 的人“已经知道它是如何工作的”。
那么,useReducer 的 reducer 函数需要是纯函数吗? 如果是,为什么?如果不是,应该它们是纯的吗?如果是这样,为什么?
我正在想象一个动作将状态更新为“正在加载”,同时触发一个 API 调用,该调用在响应时会分派不同的动作并因此再次更新状态。
【问题讨论】:
标签: reactjs