Vue.js Vuex状态未从本地存储更新

Vue.js Vuex状态未从本地存储更新,vue.js,vuex,Vue.js,Vuex,当直接从匿名窗口中的地址栏访问路由时,我在从本地存储更新Vuex状态时遇到一些问题 直接访问路由时(例如,单击电子邮件中的链接),执行装载的操作getDetail,更新本地存储,但状态未重新评估-它仍然表示未定义,就好像密钥不存在一样 是否有方法重新评估状态,或者是否必须在setDetail中更新状态 const state = { key: localStorage.getItem('key'), details: null } const actions = { a

当直接从匿名窗口中的地址栏访问路由时,我在从本地存储更新Vuex状态时遇到一些问题

直接访问路由时(例如,单击电子邮件中的链接),执行装载的操作
getDetail
,更新本地存储,但状态未重新评估-它仍然表示未定义,就好像密钥不存在一样

是否有方法重新评估状态,或者是否必须在
setDetail
中更新状态

const state = {
    key: localStorage.getItem('key'),
    details: null
}

const actions = {
    async getDetail({ commit }, key) {
        const details = await Service.detail(key)
        commit('setDetail', details)
    }
}

const mutations = {
    setDetail(state, details) {
        state.details = details
    }
}

const Service = {
    detail: async function(key) {
        const url = `/store/${key}/`
        const response = await ApiService.get(url)
        localStorage.setItem('key', key)
        return response.data
    }
}

如果发生突变(或动作),将重新评估状态。您可以直接更改状态,但建议不要这样做,因为它会破坏反应性

LocalStorage
不是反应性的,因此您需要使用
mutation
action

更新状态。这可能需要在创建组件时调用mutation。如果您需要,请告诉我,然后我可以为您创建一个演示