【发布时间】:2019-04-02 10:51:02
【问题描述】:
store.js
import Vue from 'vue';
import Vuex from 'vuex';
import userStore from './user/userStore.js';
import VuexPersist from "vuex-persistedstate";
Vue.use(Vuex)
const debug = process.env.NODE_ENV !== 'production'
const vuexLocalStorage = new VuexPersist({
key: 'vuex', // The key to store the state on in the storage provider.
storage: window.localStorage, // or window.sessionStorage or localForage
})
export default new Vuex.Store({
modules:{
userStore,
plugins: [vuexLocalStorage.plugin]
},
strict:debug
})
userStore.js
const state = {
authUser:null,
roles:null
}
const mutations = {
SET_AUTH_USER(state,userObj){
state.authUser = userObj
},
SET_USER_ROLE(state,userRole){
state.roles = userRole
}
}
const actions = {
setUserObject :({commit},userObj) => {
commit('SET_AUTH_USER',userObj)
},
setUserRoles :({commit},userRole) => {
commit('SET_USER_ROLE',userRole)
}
}
export default {
state, mutations, actions
}
Sidebar.vue
created(){
this.getRoles();
},
methods: {
getRoles(){
var _this = this
_this.roles_data = response.data
_this.$store.dispatch('setUserRoles',_this.roles_data)
_this.fetch_roles()
}
fetch_roles(){
console.log(this.$store.state.userStore.roles)
// OUTPUT
// (3) [{…}, {…}, {…}, __ob__: Observer]
console.log(this.$store.state.userStore)
// OUTPUT
// {__ob__: Observer}
// authUser: "NqStDm8ol3QGtoh0hzL7yhC3NP3HV0ktYKmYHI8TNiCjG4T4tLlv3pOEWFdA5CEh"
// roles: Array(3)
}
}
Dashboard.vue
created(){
console.log(this.$store.state.userStore.roles)
// OUTPUT
// null
console.log(this.$store.state.userStore)
// OUTPUT
// {__ob__: Observer}
// authUser: "NqStDm8ol3QGtoh0hzL7yhC3NP3HV0ktYKmYHI8TNiCjG4T4tLlv3pOEWFdA5CEh"
// roles: Array(3)
}
嗨 我正在使用 vuex 来存储用户角色访问权限。我在商店 1) authUser 2) 角色中存储了两个变量。 authUser 存储用户令牌,roles 存储用户角色数组。当我从 api 获取角色时,我将角色分派到 _this.$store.dispatch('setUserRoles',_this.roles_data)。当我在侧边栏中进行控制台时,我会得到这样的输出
console.log(this.$store.state.userStore.roles)
(3) [{…}, {…}, {…}, __ob__: Observer]
console.log(this.$store.state.userStore)
{__ob__: Observer}
authUser: "NqStDm8ol3QGtoh0hzL7yhC3NP3HV0ktYKmYHI8TNiCjG4T4tLlv3pOEWFdA5CEh"
roles: Array(3)
但是当我在创建的函数中控制仪表板中的相同内容时,它返回 roles null
console.log(this.$store.state.userStore.roles)
null
console.log(this.$store.state.userStore)
{__ob__: Observer}
authUser: "NqStDm8ol3QGtoh0hzL7yhC3NP3HV0ktYKmYHI8TNiCjG4T4tLlv3pOEWFdA5CEh"
roles: Array(3)
我错过了什么吗?或者它是一个错误
【问题讨论】:
-
能否提供dashboard.vue的相关部分?
-
@BoussadjraBrahim 在我的问题中添加了 dashboard.vue。我只是从侧边栏调用角色并在 vuex 中调度它,然后在dashboard.vue 中调用。但它在 authUser 中给出了角色和值的 null
标签: javascript vue.js vuex