Polymer 1.x: как сбросить все приложение после выхода из системы

У меня есть приложение Polymer. Когда пользователь выходит из системы, я хочу вернуть все приложение в исходное состояние. (Прямо сейчас, когда пользователь снова входит в систему после выхода из системы, приложение возвращает пользователя в состояние приложения и страницу, на которой он находился при выходе из системы.)

Существует ли удобный (то есть глобальный) дизайн приложения или шаблон кода для этого? Если нет ничего удобного / глобального, пожалуйста, покажите, как сделать это локально (т.е. поэлементно).

редактировать

После некоторых исследований ( и разговоров в группе слабаков Полимера), похоже, что есть два основных предложения. Другие приветствуются.

Перезагрузить браузер

Можно обязательно обновить страницу браузера, используя оператор JS:

location = location;

и 534 других способа.

Это решение меня не устраивает. По сути, это взлом, который создает проблемы с производительностью и другие нежелательные побочные эффекты, такие как ожидание обновления и перекраски экрана.

Архитектура без гражданства

Кто-то предложил использовать архитектуру приложения без сохранения состояния. Но я не уверен, как реализовать это в контексте кодирования приложения 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();
  }
},

Несколько возможных решений включают в себя:

  1. Очистите сеанс в локальном хранилище и там, где вы его сохранили
  2. Укажите путь ко всей пользовательской информации и установите для этих объектов значение {} на выходе.
  3. Войдите в систему как анонимный гость, чтобы новый пользователь перезаписывал информацию о предыдущих пользователях.
  4. Сохраните клон глубокой копии исходного состояния основного элемента оболочки, затем замените текущий элемент на старый
  5. Объедините изменения, если ваши пользовательские данные были сохранены в атрибутах или аннотациях, они будут сброшены.
  6. Замените один элемент, который хранит информацию о пользователях.
Другие вопросы по тегам