Redux

简介

redux是一个装填管理工具,由flux的单向数据流演化而来;其遵循三个原则,单一数据源、状态只读、状态修改均由纯函数完成

单一数据源

单一数据源的好处在于整个应用的状态都保存在一个对象中,这样我们可以随时可以提取出整个应用的状态进行持久化,也为服务端渲染提供了可能

状态知识可读的

redux不支持定义store,redux中需要定义一个reducer,reducer根据当前触发的action对当前的状态进行迭代

状态变化由纯函数完成

纯函数的设计使得reducer对状态的修改变得简单、纯粹、可测试和支持时间旅行的调试方式

更新流程(发布-订阅)

  1. 用户在页面上进行某些操作,通过 dispatch 发送一个 action。
  2. Redux 接收到这个 action 后通过 reducer 函数获取到下一个状态。
  3. 将新状态更新进 store,store 更新后通知页面进行重新渲染。

中间件

由于redux是纯函数,无法去处理一些副作用如请求和缓存等,所以这些副作操作需要交给中间件来完成

常用中间件

  1. redux-thunk 支持返回一个函数,在函数内进行异步操作
  2. redux-saga 将异步请求封装至saga中
  3. redux-promise 支持在payload中返回一个promise
  4. redux-action 简化reducer和actions的编写