在React的函数组件中,我们可以通过usestate()来创建state。这种创建state的方式会给我们返回两个东西state和setState()。state用来读取数据,而setstate()用来设置修改数据。但是这种方式也存在着一些不足,因为所有的修改state的方式都必须通过setstate()来进行,如果遇到一些复杂度比较高的state时,这种方式似乎就变得不是那么的优雅。
Reducer横空出世
为了解决复杂State带来的不便,Reakt为我们提供了一个新的使用state的方式。Reducer横空出世,reduce单词中文意味减少,而reducer我觉得可以翻译为"当你的state的过于复杂时,你就可以使用的可以对state进行整合的工具”。
当然这是个玩笑话,个人认为Reducer可以翻译为"整合器”,它的作用就是将那些和同一个state相关的所有函数都整合到一起,方便在组件中进行调用。它只适用于那些比较复杂的state,对于简单的state使用Reducer只能是徒增烦恼。
useReducer(reducer,initialArg, init)
参数:
1.reducer :整合函数:
对于我们当前state的所有操作都应该在该函数中定义该函数的返回值,会成为state的新值
reducer在执行时,会收到两个参数:
1.state当前最新的state
2.action它需要一个对象
2.initialArg : state的初始值
作用和useState()中的值是一样返回值:是一个数组
第一个参数,state 用来获取state的值
第二个参数,state修改的派发器。 通过派发器可以发送操作state的命令,具体的修改行为将会由另外一个函数(reducer)执行
例子:
一定要加return,否则输入错误的时候会导致state的丢失!!!!!!!!!!!!!!!