记录在工作中遇到的一个问题,使用 dva 的 model 请求数据,在退出登录时 state 里面的数据没有清空,导致切换登录账号时,页面里的数据还存在上一个登录账号的数据的问题。
使用 dva 的 onReducer 钩子函数,在监听到 退出登录 的事件时,手动清空 state 中的值。
export const dva = {
config: {
onError(err) {
err.preventDefault();
},
onReducer: r => (state, action) => {
const newState = r(state, action);
// todo 监听当触发 login/logout 退出登录时,清空所有的 state
// 解决 dva 注销退出系统后再点击登入,state 数据未清空的问题
if (action.payload && action.payload.actionType === 'login/logout') {
return r(initialState, action);
}
return newState;
},
initialState,
},
};