【发布时间】:2023-04-11 07:42:01
【问题描述】:
我正在尝试从main.js 文件访问更新的 vuex getter 以检查用户是否已登录。基于此,我将用户带到登录页面。在 main.js 文件中,我只是像这样访问 store getter。
var router = new VueRouter({...})
router.beforeEach((to, from, next) => {
console.log(store.getters['general/isUserLoggedIn'])
next()
})
general 是模块名称。
但是当简单地记录 store 时,它会显示具有更新值的对象。但是在记录store.getters['general/isUserLoggedIn'] 时,它会显示初始状态值。为什么它不提供更新的价值。这是正确的做法还是有其他替代方法。
更多细节
在 store.js 文件中
import Vue from 'vue'
import Vuex from 'vuex'
import general from './modules/general'
import other from './modules/other'
Vue.use(Vuex)
export const store = new Vuex.Store({
modules: {
general,
other
},
plugins: [],
strict: process.env.NODE_ENV !== 'production'
})
通过调用api状态检查用户是否登录 在 App.vue 文件中
axios.get('/api/profile').then((response) => {
if (response.data.status === 'success') {
this.setUserLoggedIn(true)
}
})
actions.js 在通用模块中
setUserLoggedIn ({ commit }, data) {
commit(types.SET_USER_LOGGED_IN, data)
}
mutations.js 在通用模块中
const mutations = {
[types.SET_USER_LOGGED_IN](state, data) {
state.isUserLoggedIn = data
}
}
【问题讨论】:
-
如何注册和导入
store? -
在 main.js 中导入存储像这样
import { store } from './store'@Mr.
标签: javascript vue.js vuejs2 vuex vue-router