extraReducers
说明
- 指定额外的 reducer,做为全局性的reducers。
- 相当于一个钩子,每次触发dispatch,都会调用该方法,重新组合reducers。
- 这里可以参考 dva-loading 的源码写法。



- 如果要改变extraReducers中对应namespace中的值,因为是reducers,所以,通过yield put 方法就可以了(或者页面发送一个dispatch,都是一样的)。
如:监听到case对应的值,则会改变extraReducers里面reducers的值。 - 每一次触发dispatch,都会调用extraReducers这个方法,重新组合reducers。
yield put ({ type: 'SHOW' });
onEffect
说明
- 封装 effect 执行。
- 相当于一个钩子,每次触发异步请求时(也就是触发effects),都会调用该方法,这里可以额外处理,我们想要的动作。
- 这里可以参考 dva-loading 的源码写法。


触发一个异步动作,redux调试工具输出oneffect的执行过程


扩展
有些redux库,需要通过 combineReducers 重新组合reducers,而在dva中,是没有combineReducers方法的,所以,如果需要在dva中使用,则是,通过extraReducers方法重新组合reducers。
如:react-intl-redux 库。

参考
https://dvajs.com/api/#app-use-hooks
https://github.com/dvajs/dva/blob/master/packages/dva-loading/src/index.js
网友评论