前置知识
Javascript纯函数
简单的定义:
- 同一个输入一定能得到同一个输出
- 函数执行期间不产生副作用
什么是函数副作用
副作用是在计算结果的过程中,系统状态的一种变化,或者与外部世界进行的可观察的交互。
以下是会产生副作用的场景:
- 更改文件系统
- 往数据库插入记录
- 发送一个http请求
- 可变数据
- 打印/log
- 获取用户输入
- DOM查询
- 访问系统状态
React中使用纯函数的好处
- 保证了输入输出稳定的情况下,安心使用公用代码,不必担心结果被篡改
- 实现的时候保证使用的是纯函数,只需要实现自己的业务逻辑即可,不需要关心传入的内容或者函数体依赖了外部的变量
Redux
为什么需要redux
现阶段项目越来越大时,需要管理的状态也变得越来越多、越来越复杂。管理不断变化的状态是非常困难的,因为
- 状态间是存在相互依赖的,一个状态可能会引起另一个状态的变化,同时可能也会引起视图跟着变化。
- 当项目的复杂度上来后,状态在何时被改变,因为什么原因被改变,会变得难以控制和追踪。
什么是Redux
让任意两个组件进行数据交互,利用纯函数特性,实现可预测化数据状态管理。
Redux包含哪些部分
Store:只读的唯一数据源Action:对变化的描述Reducer:一个负责对变化进行分发处理的纯函数,最终把处理结果返回给Store
Redux的工作流程
- view 层触发一个 action,这个 action 由 store.dispatch(action) 传递给 reducer
- reducer 根据 previousState 和 action type 返回一个新的 state(不修改数据)