Как предотвратить сброс переменных js при перезагрузке в Polymer?
Я пытаюсь построить простое приложение на полимере, используя predix, проблема, с которой я сталкиваюсь: когда страница перезагружается, переменные возвращаются в свое первоначальное состояние, я использую эти переменные, чтобы показать / скрыть содержимое при переходе на другие страницы (файлы.html). У меня есть один основной файл.html, где переменные объявлены и есть маршруты ко всем файлам.
Вопросы:
Какие способы предотвратить это?
Как я могу сделать это лучше, так как я планирую создать еще одно большое и сложное приложение, которое потребует от пользователей входа и выхода?
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, вы также получаете преимущество обработки обещаний (асинхронная выборка данных).