У меня есть приложение, где пользователь может подписаться на событие. Как только пользователь зарегистрировался, он может посещать маршруты, которые он не мог раньше.
Я использую graphql для своих запросов API.
Код в моем охраннике маршрута выглядит так:
router.beforeEach(async (to, from, next) => {
if (to.meta.signUpRequired && from.name) {
const { data: { getCurrentUser } }
= await apolloProvider.defaultClient.query({
query: USER_INFO_QUERY
});
if (getCurrentUser && getCurrentUser.isCollectionAttendee) {
return next();
}
return next('/');
}
return next();
});
Это работает нормально, и запрос не выполняется каждый раз, когда изменяется маршрут, потому что vue-apollo кэширует результат. Моя проблема в том, что если пользователь подписывается и затем пытается переключить маршрут, он не может этого сделать, потому что кэшированный результат запроса все еще используется.
Я не хочу использовать fetchPolicy только для сети перед каждым изменением маршрута.
Как я могу решить эту проблему?