1 分钟带你入门 Redux 中间件
前言:欢迎再次光临我的1分钟系列,看到这里的小伙伴应该对Redux有了一个基本了解了,如果不是最好通过官网了解一下,或者看看这个1 分钟带你入门 Redux、React-Redux
基本原理
我们首先来想个问题,假如你是Redux的设计者,你会把这个中间件安排的哪个环节呢?
button这个按钮是交给用户操作的,reducer是个纯函数用来处理state,而state又和view相互对应,所以dispatch这个阶段是个最佳选择
不难发现,中间件是在store创建时注入的,然后运行的时候是按照中间排列的顺序一个接着一个执行
再来看看下面这张图,让你对他的数据流转会更加的清晰
数据流转
View视图(页面)上触发了一个事件或者啥东西,需要修改某个状态
然后创建一个Action到Dispatch里面
Dispatch里面的中间件完成一些操作后(Side Effect),又重新创建一个新的Action
直到中间件MiddleWare里所有的函数全部执行完成,才触发Reducer
Reducer更新完State后就是通知View渲染新的数据
相信你头脑中刻上这两个模型后,Redux算是彻底被你攻克了,剩下的就是工程上的实践,你还可先看看文档,如:
Redux 入门教程(二):中间件与异步操作 - 阮一峰 这里还介绍了redux-thunk / redux-promise 这样的中间件的介绍
此外,我再给你简述一下redux-saga吧
中间件 Redux-Saga 简介
redux-saga也是redux的一种中间件,它的创建过程是这样子的:
再来看看saga.js这个文件干了些啥
然后组件上调用可以是这样子的:
不难发现saga基本上可以做到代码无侵入性,并优雅的实现dispatch的异步功能;也就是说原来的代码可以不用修改,仅仅是在全局创建声明时注入saga中间件,然后在需要的地方编写saga.js异步action
当然saga的功能还不仅仅如此,你还可以观摩官方文档,从而发现更多强大的地方!
参考:
版权声明: 本文为 InfoQ 作者【Leo】的原创文章。
原文链接:【http://xie.infoq.cn/article/92405bb94c8d1ca8ac52cc88c】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论