Как предотвратить сброс переменных js при перезагрузке в Polymer?

Я пытаюсь построить простое приложение на полимере, используя predix, проблема, с которой я сталкиваюсь: когда страница перезагружается, переменные возвращаются в свое первоначальное состояние, я использую эти переменные, чтобы показать / скрыть содержимое при переходе на другие страницы (файлы.html). У меня есть один основной файл.html, где переменные объявлены и есть маршруты ко всем файлам.

Вопросы:

  1. Какие способы предотвратить это?

  2. Как я могу сделать это лучше, так как я планирую создать еще одно большое и сложное приложение, которое потребует от пользователей входа и выхода?

2 ответа

Решение

Любая информация, которую нужно хранить на клиенте, должна быть записана в localStorage. Лично я предпочитаю использовать избыточность с моим состоянием, хранящимся в localStorage. Благодаря этому мои пользователи могут продолжать работать именно там, где они остановились. Аутентификация - это еще что-то, что вам нужно для реализации механизма обновления токенов, как обеспечивает Auth0.

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

Тем не менее, и поскольку вы запросили альтернативы, вы также можете использовать свой маршрутизатор, чтобы перейти к window.history и сохранить там обновленные переменные.

window.history.pushState({'navigate': true, 'url': url, 'extra': extra}, 'FSport', url);

window.history.replaceState({'navigate': true, 'url': url, 'extra': extra}, 'FSport', url);

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


Если вы решили сохранить данные в localStorage, также помните, что вы получили indexDb для объектов, используя localforage. Несмотря на то, что он медленнее, чем localStorage, вы также получаете преимущество обработки обещаний (асинхронная выборка данных).

Другие вопросы по тегам