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/(.+)/
),你的開發的項目不是放在根目錄時,需要注意匹配的表達式是否需要包含項目的基目錄