简单了解Redux

102 阅读2分钟

前置知识

Javascript纯函数

简单的定义:

  1. 同一个输入一定能得到同一个输出
  2. 函数执行期间不产生副作用

什么是函数副作用

副作用是在计算结果的过程中,系统状态的一种变化,或者与外部世界进行的可观察的交互。

以下是会产生副作用的场景:

  1. 更改文件系统
  2. 往数据库插入记录
  3. 发送一个http请求
  4. 可变数据
  5. 打印/log
  6. 获取用户输入
  7. DOM查询
  8. 访问系统状态

React中使用纯函数的好处

  1. 保证了输入输出稳定的情况下,安心使用公用代码,不必担心结果被篡改
  2. 实现的时候保证使用的是纯函数,只需要实现自己的业务逻辑即可,不需要关心传入的内容或者函数体依赖了外部的变量

Redux

为什么需要redux

现阶段项目越来越大时,需要管理的状态也变得越来越多、越来越复杂。管理不断变化的状态是非常困难的,因为

  1. 状态间是存在相互依赖的,一个状态可能会引起另一个状态的变化,同时可能也会引起视图跟着变化。
  2. 当项目的复杂度上来后,状态在何时被改变,因为什么原因被改变,会变得难以控制和追踪。

什么是Redux

让任意两个组件进行数据交互,利用纯函数特性,实现可预测化数据状态管理。

Redux包含哪些部分

  1. Store:只读的唯一数据源
  2. Action:对变化的描述
  3. Reducer:一个负责对变化进行分发处理的纯函数,最终把处理结果返回给Store

Redux的工作流程

  1. view 层触发一个 action,这个 action 由 store.dispatch(action) 传递给 reducer
  2. reducer 根据 previousState 和 action type 返回一个新的 state(不修改数据)