【发布时间】:2019-11-17 20:09:42
【问题描述】:
在我的 App.vue 中,我正在调度一个 Vuex 操作以从我的 API 中检索 user 以及用户的 role,如下所示:
async mounted() {
const userToken = localStorage.getItem('token');
await this.getUserRole(userToken);
await this.getUserImage(userToken);
},
我写了一个 getter,它只返回我保存在用户对象中的当前角色,就像这样 getRole: state => state.user_role.role
我想要做的是,我想在另一个视图 (Projects.vue) 中调度有关用户角色的操作:
async mounted() {
console.log(this.$store.getters['user/getRole']);
console.log(this.userRole);
if (this.userRole === 'user') {
// do things ...
}
}
computed: {
...mapGetters('user', {
user: 'getUser',
userRole: 'getRole',
})
}
这里的问题是,在第一页加载/刷新时,我从我的 getter 中得到了undefined。只有当我切换路线并返回时,它才会在这种情况下返回 user 而不是 undefined。
我的意思是我可以在我的 Project.vue 中再次发送 user/getUserRole 操作,但我想这会很糟糕,因为我对同一个商店/操作有多个调用。
我也尝试在我的mounted() 中使用$nextTick(),但这也没有帮助。
【问题讨论】:
标签: javascript vue.js async-await vuex