Не могу обратиться к vuex из router
существует Vue приложение, в котором пользователь может авторизоваться. Так же пользователь может просматривать страницы других пользователей будучи не авторизованным. Если пользователь авторизован и ищет свою страницу в поиске, его перенаправляет на его профиль /profile
router
{
path: '/profile',
component: load('Profile'),
meta: {
requiresAuth: true,
}
},
{
path: '/profiles/:id',
component: load('SearchProfile'),
beforeEnter: (to, from, next) => {
if (to.params.id === store.getters['user/getUserId']) {
return next('/profile');
}
return next();
}
},
Проблема в том, что в beforeEnter, getUserId возвращает null ( первоначальное состояние userId в store ) Хотя в router.beforeEach всё работает нормально и есть доступ к store:
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth && !store.getters['user/isAuthenticated']) {
return next('/');
}
return next();
});
P.S store импортирован в router:
import store from '@/store';
Ответы (1 шт):
У меня была точно такая же проблема, beforeEach отрабатывает нормально, а вот в beforeEnter получаю null.
Вот этот ответ помог решить проблему асинхронным запросом к store https://stackoverflow.com/a/45581925/9607292