今天在看 useReducer 这一章时,看生气了。 文档在介绍引入 useReducer 的步骤,实现了 reducer 函数以后,它说了这样一段话: 由于 reducer 函数接受 state ( tasks )作为参数,因此你可以 在组件之外声明它。这减少了代码的缩进级别,提升了代码的可读性。 此时,还没有介绍到写完 reducer 函数后,如何在函数组件内结合 useReducer hook 进行使用。 所以我突然陷入了一个非常大的困惑: 为什么 reducer 函数接受 state 作为参数,它都使用到了组件的 state ,还可以在组件之外声明它呢? 后来我才明白,这句话的意思其实是想表达:由于 reducer 函数只通过参数获取当前状态,它不依赖组件内部的任何变量,因此你可以把它声明在组件外部,避免每次渲染都重新创建。 就感觉文档写得不能细读,一细读,这个因果关系就非常牵强,感觉文档作者 是一堆 API 摆在他的面前,他不得不,把这一切写通,写得合理 。