骊山语罢清宵半,泪雨霖铃终不怨。
reducer
- reducer是redux中一个概念,以下就是redux更新数据的流程。
- redux有复杂的概念以及较高的维护成本
- 难以维护的Action
- 复杂度无法预知的Store
- 复杂到令人绝望的Reducer
useReducer
- useReducer只是一个小范围内的状态管理工具,它是用来在某些特殊场景下,来取代useState的,它把redux的复杂度控制在了可以接受的范围之内。
- useState 实际上执行的也是一个 useReducer, useReducer 是更原生的,可以在任何使用 useState 的地方都替换成使用 useReducer。
useReducer 语法
1 | const [state, dispatch] = useReducer(reducer, initialArg, init); |
- 参数
- 第一个是 reducer 函数,这个函数返回一个新的state。
- 第二个是 state 初始值。
- 第三个是 初始化函数。
useReducer 简单使用
1 | const initialState = {count: 0}; |
- 惰性初始化
1 | import { Button } from 'antd'; |
useReducer 使用场景
- state是一个数组或者对象。
- state变化很复杂,经常一个操作需要修改很多state。
- 应用程序比较大,希望UI和业务能够分开维护。
useReducer 例子
1 | function LoginPage() { |
- 使用useReducer
1 | const initState = { |