如何在刷新Firebase上停止数据重新加载

时间:2016-12-23 20:48:51

标签: javascript html firebase firebase-realtime-database

我有一个有趣的问题,我认为以前没有被问过,对我们中的一些人来说应该是一个体面的挑战。首先,我是firebase的新手 - 大约2天(如果那样)。我一直在阅读文档,但似乎无法找到答案。

我的情况是这样的: 我从实时数据库中提取用户数据,它填写了我网页中的许多字段。

问题是: 每次页面重新加载时(即使在home.htmlpage2.html之间更改导航),区域都会留空,直到脚本重新加载数据。

我的问题是: 有没有办法我只能加载一次数据,这样问题就不会再出现了?

我试过了:

  1. 利用firebase内置的once()函数。没有用,因为每次加载页面时仍会调用脚本。
  2. 其他可能的解决方案: 我可以存储一个变量来指示数据之前是否已发送过吗?我该怎么做?

    有什么想法吗?谢谢大家!

3 个答案:

答案 0 :(得分:2)

有多种方法可以实现这一目标。您可以编写单个页面应用程序,以便每个页面都不是重新加载(查看角度,反应等等),或者您可以使用浏览器localStorage来存储结果。

答案 1 :(得分:2)

您可能需要考虑使用session storagelocal storage

会话存储的作用是使您能够将某些变量保存到本地缓存中,直到浏览器关闭时才会清除该缓存。本地存储用于相同的事情,唯一的区别是它在浏览器关闭时不会被清除。

我认为,对于这种情况,会话存储就足够了,因为您不希望永久保存用户数据,只是因为有些变化。

要完成此任务,您可以执行类似

的操作
if(sessionStorage.getItem("updated")){
  // get the data from the session storage
} else {
  // get from firebase
  sessionStorage.setItem("updated",true);
}
每当页面加载时

希望这有帮助。

答案 2 :(得分:0)

这取决于使用存储。会话存储,本地存储,IndexedDB,Cookie等。(只需在Google上搜索它们并研究这些存储即可。)

当然,您可以使用appendChild。(在google中再次搜索)

之后,使用该附录存储在本地存储中。