首页 男生 其他 深入浅出React和Redux

9.1.4 中间件开发原则

深入浅出React和Redux 程墨 1371 2021-04-06 02:29

  您可以在百度里搜索“深入浅出React和Redux 艾草文学(www.321553.xyz)”查找最新章节!

  

  9.1.4 中间件开发原则

  开发一个Redux中间件,首先要明确这个中间件的目的,因为中间件可以组合使用,所以不要让一个中间件的内容太过臃肿,尽量让一个中间件只完成一个功能,通过中间件的组合来完成丰富的功能。

  上面的例子中,都只使用了一个中间件的情况,实际中applyMiddleware函数可以接受任意个参数的中间件,每个通过dispatch函数派发的动作组件按照在applyMiddleware中的先后顺序传递给各个中间件,比如可以把redux-thunk和我们写的Promise中间件组合使用:

  applyMiddleware(thunkMiddleware, promiseMiddleware)

  这样,每个派发的action对象会先交给thunkMiddleware,如果不是函数类型的action对象,就会顺延交给promiseMiddelware,在这里,两个中间件所处理的action对象不是一个类别,所以先后顺序并不重要。

  每个中间件必须是独立存在的,但是要考虑到其他中间件的存在。

  所谓独立存在,指的是中间件不依赖于和其他中间件的顺序,也就是不应该要求其他中间件必须出现在它前面或者后面,否则事情会复杂化。

  所谓考虑到其他中间件的存在,指的是每个中间件都要假设应用可能包含多个中间件,尊重其他件可能存在的事实。当发现传入的action对象不是自己感兴趣的类型,或者对action对象已经完成必要处理的时候,要通过调用next(action)将action对象交回给中间件管道,让下一个中间件有机会来完成自己的工作,千万不能不明不白地丢弃一个action对象,这样处理“管道”就断了。

  对于异步动作中间件,等于是要“吞噬”掉某些类型的action对象,这样的action对象不会交还给管道。不过,中间件会异步产生新的action对象,这时候不能够通过next函数将action对象还给管道了,因为next不会让action被所有中间件处理,而是从当前中间件之后的“管道”位置开始被处理。

  一个中间件如果产生了新的action对象,正确的方式是使用dispatch函数派发,而不是使用next函数。 深入浅出React和Redux

目录
设置
手机
书架
书页
评论