入门理解redux-thunk和redux-saga

**

如标题所示,接下来要说的就是redux的中间件

**
那么中间件是什么?首先先说明redux中的 action 和 store 之间是通过 dispatch 这个方法来建立桥梁的,那么中间件要做的就在这个桥梁上搞事情,也就是对dispatch的封装。为什么要在这儿呢?因为所有的用户操作发起的action都是要通过 dispatch 才能到达 store ,相当于千军万马过独木桥,那么我只要在这桥上搞个监控器(如redux-logger),我就能打印出所有的 action 指令了。

再说接下来的中间件之前我们先了解下applyMiddleware这个东西,其实applyMiddleware就是Redux的一个原生方法,将所有中间件组成一个数组,依次执行。中间件多了可以当做参数依次传进去

1、redux-thunk

先贴代码:

import {
	createStore,
	applyMiddleware
} from 'redux';
import thunk from 'redux-thunk';

const store = createStore(
  reducers, 
  applyMiddleware(thunk)
);

上面代码就是将thunk中间件导入的方式,那么thunk有什么作用呢?
其他我不知道,知道他最重要的一个作用就是:可以把返回action对象的方法分离到action单独的文件中,因为用thunk,方法可以直接由dispatch发送到store,而store判断Ta并不是一个action对象,就会先执行这个方法从中得到这个action对象,store再接收这个对象,方才执行接下来的redux流程。
git地址:[https://github.com/reduxjs/redux-thunk] 可以简单了解

2、redux-saga

先贴代码:

import {
	createStore,
	applyMiddleware
} from 'redux';
import SagaJs from './saga.js';  // SagaJs我随便取的名字
import createSagaMiddleware from 'redux-saga';

const sagaMiddleware = createSagaMiddleware();
const store = createStore(
  reducers, 
  applyMiddleware(sagaMiddleware)
);
sagaMiddleware.run(SagaJs)

上面就是saga中间件的导入方式,其中和thunk有很多不同之处
例如; SagaJs做什么用的?createSagaMiddleware又是什么?
这个SageJs 就是处理action复杂操作的所分离出来的文件,文件里面所创建的函数也是 Generators对象,用function* 方式创建函数。createSagaMiddleware就是创建saga中间件的方法,而sagaMiddleware 就是Ta所创的中间件,然后再用sagaMiddleware.run(SagaJs) 执行saga文件返回出处理后的action对象给到store。
redux-saga适用于返回action对象更复杂的项目中,Ta有很多属于自身的API帮助SagaJs文件的开发。
git地址:[https://github.com/redux-saga/redux-saga] 可以简单了解

这篇文章只讲述我自己的理解,有很多说的不妥的地方,读者可以通过其他途径了解。

你可能感兴趣的:(咱聊聊5毛钱的技术吧)