可以想像为,一个 saga 就像是应用程序中一个单独的线程,它独自负责处理副作用。
redux-saga 是一个 redux 中间件,意味着这个线程可以通过正常的 redux action 从主应用程序
启动,暂停和取消,
它能访问完整的 redux state,也可以 dispatch redux action
https://yuque.antfin.com/afx/blog/bmkiim

redux-saga中文文档
https://github.com/superRaytin/redux-saga-in-chinese

  1. npm install --save redux-saga

为什么不是 redux-thunk

thunk 和 promise 都有的问题是,改变了 action 的含义,使得 action 变得不那么纯粹

  • redux-thunk 是支持函数形式的 action,这样 action 里就可以 dispatch 其他的 action
  • redux-promise 支持 promise函数 形式的 action,这样 action 里就可以通过看似同步的方式来组织代码
  • 缺点:让 action不纯粹

业务逻辑都放到 saga 里,这样可以让 reducer, action 和 component 都很纯粹

redux-saga的特点

全程跟踪/管理 action 的分发过程/顺序
组件对同步或异步的 action 无感
声明式地来表述复杂异步数据流,如长流程表单、请求失败后重试等
命令式的 redux-thunk 对于复杂异步数据流的表现无力。