dva中的subscriptions如何使用
有时,我们希望一些数据一开始就自动从接口中获取数据,在dva中如何实现呢?
这时,就需要用到dva的subscriptions
了。
subscripitons
内的方法,无论任何命名,都会自动执行,见如下示例
export default {
namespace: ''
...
subscriptions: {
setup({dispatch, history}){
history.listen((location) => {
const reg = new RegExp('/pro/(.+)')
const res = reg.exec(location.pathname)
if (res && res.length>1) {
const project = res[1] ? res[1] : 'abc'
dispatch({ type: 'getData', payload: { project } })
}
})
},
loadData({dispatch}){
dispatch({type: 'fetchData', payload:{id:4}})
}
},
...
}
dispatch 应该是redux的store中的dispatch ,history 应该是 react-router中的history
注意:subscriptions中,往往会用于监听当前路径,以便做出相应的操作。这时需要使用history参数。
在做路由匹配是(上面代码用了正则匹配/pro/(.+)/
),你的开发的项目不是放在根目录时,需要注意匹配的表达式是否需要包含项目的基目录