说起redux中间件,大家可能都挺熟悉的。github上有各种各样的中间件。以下我会对最近学习的中间件进行分析
首先是logger这个中间件的作用就是能打印出先前的state 改变后的state和action给开发带来一些便利。但是这个功能完全可以被redux-devtools-extension取代。
然后是thunk这个应用的还是比较多的,它的引入是为了解决action里面无法进行异步操作的问题。它可以使action返回的是函数。
接下来的是promise.middleware 这个的引入是解决action里面异步写法过于复杂的问题,注意在调用的时候是要在中间件里面执行的。它会自动创建aciton的成功与失败的action。
最后要说的是redux-saga它本身是基于es6的generator来实现的,它的实现需要一个监视saga我们可以用takeEvery或者takeLatest。takeEvery是注册监视action不用等着异步完成就可以更新视图同步性比较高。然后takeLatest是防止重复提交用的。然后就是call和fork了call是阻塞的,fork是非阻塞的。
面试的话常常问到 thunk 和 saga的区别,他们都能实现异步,不同点在于thunk是强耦合的。必须要写在action里面这样的话不便于维护,所以现在更多的是用saga。