dva中模型中subscriptions的使用

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/(.+)/),你的开发的项目不是放在根目录时,需要注意匹配的表达式是否需要包含项目的基目录

发布了132 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/youlinhuanyan/article/details/104777186
今日推荐