Dva学习踩坑

1.model中的subscription订阅
相当于一个监听器,可以监听路由变化,鼠标,键盘变化,服务器连接变化,状态变化等
subscriptions: {
setup({ dispatch, history }) { // 这里的方法名可以随便命名,当监听有变化的时候就会依次执行这的变化,这里的dispatch和history和之前说的是一样的
window.onresize = () => { //这里表示的当浏览器的页面的大小变化时就会触发里面的dispatch方法,这里的save就是reducers中的方法名
dispatch (type:"save")
}
},

onClick ({dispatch}) {
  document.addEventListener('click',() => {   //这里表示当鼠标点击时就会触发里面的dispatch命令,这里的save就是reducers中的方法名
    dispatch (type:"save")
  })
}

},

setupHistory({dispatch,history}){
history.listen((location) => {
console.log(location) //这里可以获取当前变化的history路径以及参数,hash所有值,这样就可以在路由地址变化后做处理
....
})
}

2.基于dva,websocket, model,subscriptions, service.

给一个能够接受服务器消息,向服务器发送消息,主动断开,可处理异常断开的例子.
subscriptions里面的在初始化的时候都会执行一下,history是dva提供给你的,你在service自己封装一下提供对socket时间监听的接口解可以了
service里面:

export function listen(action) {
socket.on('message', (data) => {
action(data);
});
}
subscriptions里面:

socketMessage({ dispatch }) {
return service.listen((data) => {
dispatch({ type: 'your action', payload: data });
});
}

你可能感兴趣的:(Dva学习踩坑)