记录 dva 如何在退出的时候清空所有 state

130 阅读1分钟

记录在工作中遇到的一个问题,使用 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,  
    },  
};