В моем App.vue Я отправляю действие Vuex для получения user
из моего API, а также role
пользователя следующим образом:
async mounted() {
const userToken = localStorage.getItem('token');
await this.getUserRole(userToken);
await this.getUserImage(userToken);
},
Я написал метод получения, который возвращает мне только текущую роль, которая сохранена в пользовательском объекте, как этот 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',
})
}
Проблема здесь в том, что при первой загрузке / обновлении страницы я получаю undefined
от моего геттера. Только если я переключаю маршрут и возвращаюсь, он возвращает меня в этом случае user
вместо undefined
.
Я имею в виду, что я мог бы снова отправить действие user/getUserRole
в моем Project.vue, но я думаю, это было бы плохо, так как у меня есть несколько вызовов для одного и того же магазина / действия.
Я также пытался работать с $nextTick()
в моем mounted()
, но это также не помогло.