在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 退出登錄之后state置空但是對應的getter沒有隨著置空

退出登錄之后state置空但是對應的getter沒有隨著置空

情況是這樣,我點擊注銷時commit了一個mutation,把state.breadCrumbList重置為空,但是發(fā)現(xiàn)getters里仍然有內容,如圖圖片描述

導致的后果是,除非我人為刷新瀏覽器,不然直接再次登錄進去會發(fā)現(xiàn)一進頁面就能看到上次登錄通過mapGetters渲染出的內容,這是什么原因?

補充細節(jié):
以下getter:

getters: {
    breadCrumbList: state => state.breadCrumbList
}

以下是組件里數(shù)據(jù)的映射:

<el-breadcrumb separator="/" class="pull-left m-x-l-4">
    <el-breadcrumb-item>首頁</el-breadcrumb-item>
    <el-breadcrumb-item
        v-for="item in breadCrumbList"
        :key="item">
        {{ item }}
    </el-breadcrumb-item>
</el-breadcrumb>
computed: {
    ...mapGetters([
        'breadCrumbList'
    ])
}

然后我點擊退出登錄的流程,頁面里點擊按鈕觸發(fā)action

logout ({commit}) {
    commit(types.LOGOUT)
}

然后:

[types.LOGOUT] (state) {
    resetState(state)
    window.localStorage.clear()
}

以下state:

const initState = {
    activeSubmenu: [],
    activeMenuIndex: '',
    showLastLogin: true
    // menuList: []
}
export default {
    state: {
        token: '',
        userId: '',
        breadCrumbList: [],
        ...initState,
        initState
    }
}

resetState方法是我用來初始化state的:

export function resetState (state) {
    if (state['initState']) {
        for (let key in state) {
            if (key !== 'initState') {
                delete state[key]
            }
        }
        state = Object.assign(state, state['initState'])
    } else {
        return false
    }
}
回答
編輯回答
拽很帥

你這getters方法里返回的是state的breadCrumbList嗎。。。

2018年5月8日 11:22