鍍金池/ 問(wèn)答/HTML/ 退出登錄之后state置空但是對(duì)應(yīng)的getter沒(méi)有隨著置空

退出登錄之后state置空但是對(duì)應(yīng)的getter沒(méi)有隨著置空

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

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

補(bǔ)充細(xì)節(jié):
以下getter:

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

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

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

然后我點(diǎn)擊退出登錄的流程,頁(yè)面里點(diǎn)擊按鈕觸發(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方法是我用來(lái)初始化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