Polymer 1.x: как сбросить все приложение после выхода из системы
У меня есть приложение Polymer. Когда пользователь выходит из системы, я хочу вернуть все приложение в исходное состояние. (Прямо сейчас, когда пользователь снова входит в систему после выхода из системы, приложение возвращает пользователя в состояние приложения и страницу, на которой он находился при выходе из системы.)
Существует ли удобный (то есть глобальный) дизайн приложения или шаблон кода для этого? Если нет ничего удобного / глобального, пожалуйста, покажите, как сделать это локально (т.е. поэлементно).
редактировать
После некоторых исследований ( и разговоров в группе слабаков Полимера), похоже, что есть два основных предложения. Другие приветствуются.
Перезагрузить браузер
Можно обязательно обновить страницу браузера, используя оператор JS:
location = location;
Это решение меня не устраивает. По сути, это взлом, который создает проблемы с производительностью и другие нежелательные побочные эффекты, такие как ожидание обновления и перекраски экрана.
Архитектура без гражданства
Кто-то предложил использовать архитектуру приложения без сохранения состояния. Но я не уверен, как реализовать это в контексте кодирования приложения Polymer. Опять же, предложения и идеи приветствуются.
2 ответа
Лучшее решение, которое я придумал, - это обновить браузер после выхода пользователя из системы, используя location.reload()
метод.
Хитрость заключается в том, что вы должны добавить некоторую уникальную логику для вашего приложения, которая предотвращает состояние бесконечного цикла.
Перезагрузить при выходе из системы:user: {
...
observer: '_userChanged',
},
...
_userChanged: function() {
var bool = this.foo(); // Add logic here to prevent endless loop condition
if( !this.user && bool ) {
location.reload();
}
},
Несколько возможных решений включают в себя:
- Очистите сеанс в локальном хранилище и там, где вы его сохранили
- Укажите путь ко всей пользовательской информации и установите для этих объектов значение
{}
на выходе. - Войдите в систему как анонимный гость, чтобы новый пользователь перезаписывал информацию о предыдущих пользователях.
- Сохраните клон глубокой копии исходного состояния основного элемента оболочки, затем замените текущий элемент на старый
- Объедините изменения, если ваши пользовательские данные были сохранены в атрибутах или аннотациях, они будут сброшены.
- Замените один элемент, который хранит информацию о пользователях.