DvaJS的Subscription的使用

简介:
subscriptions是订阅,用于订阅一个数据源,然后根据需要dispatch相应的action。数据源可以是当前的时间、服务器的websocket连接、keyboard输入、geolocation变化、history路由变化等等。格式为({ dispatch, history }) => unsubscribe。

subscripition的用法:

异步数据初始化:
比如:当用户进入 /users 页面时,触发action users/fetch 加载用户数据。

app.model({
	subscriptions: {
		setup({ dispatch, history }) {
			history.listen(({ pathname }) => {
				if (pathname === '/users') {
					dispatch({
						type: 'users/fetch',
					});
				}
			})
		}
	}
})

拓展:

path-to-regexp Package

如果url规则比较复杂,比如: /users/:userId/search ,那么匹配和userId的获取都会比较麻烦。这时推荐使用path-to-regexp简化这部分逻辑。

import pathToRegexp from 'path-to-regexp';

// in subscription
const match = pathToRegexp('/users/:userId/search').exec(pathname);
if (match) {
	const userId = match[1];
	// dispatch action with userId
}
上一篇:React中,store.dispatch()是怎么靠传递一个action就可以将数据管理的?


下一篇:React-Redux