如何防止 js 变量在 Polymer 中重新加载时被重置?

How to prevent js variables from being reset on reload in Polymer?

我正在尝试使用 predix 在聚合物上构建一个简单的应用程序,我面临的问题是: 当页面重新加载时,变量返回到它们的初始状态,我将这些变量用于导航到其他页面(.html 文件)的 show/hide 内容。我有一个主 .html 文件,其中声明了变量并具有到所有文件的路径 .

问题:

  1. 有什么方法可以防止这种情况?

  2. 我正计划构建另一个更大更复杂的应用程序,这将需要用户登录和注销,我该如何做得更好?

任何你需要存储在客户端的信息都应该写在localStorage. I personally prefer using redux中,我的状态存储在localStorage中。有了这个,我的用户可以在他们停止的地方继续工作。 Athentication 是你需要实现像 Auth0 提供的刷新令牌机制的其他东西。

首先,您为什么需要重新加载页面,或者您是在询问用户可能会重新加载页面的原因吗?使用 Polymer,它是一个单视图应用程序,页面永远不会重新加载,而是在当前页面内切换内容。

也就是说,因为您要求替代方案,您还可以使用路由器推送到 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 中保存,还请记住您通过使用 localforage 获得了对象的 indexDb。即使它比 localStorage 慢,您也可以获得处理承诺(异步数据获取)的好处。