Я реализовал простое хранилище пользователей в Vue 2, чтобы отслеживать пользователя, прошедшего проверку подлинности.Неожиданное поведение HMR в Safari с шаблоном магазина - Vue2
Это выглядит следующим образом:
const user = {
isGuest: true,
state: {
name: ''
},
save (user) {
this.isGuest = false
this.state = user
},
clear() {
this.isGuest = true
this.state = { }
}
}
У меня есть простая служба аутентификации (реализовано в виде плагина), который извлекает пользователь из API и сохраняет его в магазин. Всякий раз, когда пользователь входит в систему, или приложение загружается, служба auth извлекает пользователя и сохраняет его в хранилище.
Я пытаюсь получить доступ к магазину из другого компонента (мой навигатор). У меня это в моем компоненте импортировать userStore:
import user from '../store/user'
export default {
data() {
return {
user
}
}
}
Это все работает очень хорошо в Chrome и Firefox.
Однако в Safari я получаю некоторое странное поведение:
Если я заставляю данные навигационных панели, чтобы сделать горячую перезагрузку, сохранив файл Navbar.vue, данные извлекаются из магазина. Однако во всех остальных случаях (перезагрузка страницы или после перенаправления vue-router после входа в систему) данные навигатора не обновляются в текущем хранилище пользователей.
Как я могу исправить это для работы во всех браузерах?
EDIT:
У меня есть немного больше информации:
Если Сижу на кнопку обновления в Safari, случайно я иногда получить правильно оказанные данные из хранилища пользователя, и случайным образом Я не.
Моя догадка заключается в том, что иногда api-вызов возвращает достаточно быстро, чтобы данные были доступны, когда данные навигатора отображаются, а иногда нет.
В других браузерах, даже когда данные недоступны при загрузке, они обновляются, когда данные становятся доступными. Это не тот случай в Safari по какой-то причине (кроме того, что горячая перезагрузка работает, если я заставляю его обновить, повторно сохранить файл)
EDIT # 2:
Я могу подтвердить, что это это проблема. Мои данные не обновляются при обновлении хранилища.
Я доказал это, если компонент навигационной системы засыпает в течение 2 секунд перед извлечением данных из магазина, и, конечно же, данные заполняются правильно каждый раз сейчас в Safari.
Итак, теперь вопрос становится более фундаментальным, как я могу использовать шаблон магазина в Safari?