比如说,有两个标签打开了相同的网页。在一个选项卡上,我在localStorage中做了一些更改,然后,当我转到另一个选项卡时,我希望看到该更改而不必重新加载页面.
我认为这样做的一种方法是使用setInterval方法,但是对于我的应用程序,我并不需要每3-5秒检查一次更新,所以我觉得这种方法并不理想。
我用的是反应。TLDR:当我打开先前加载的网页的选项卡时,是否有一种更新数据的好方法?
iOS method的附带说明:在iOS上,有一个viewDidLoad方法(据我理解它类似于componentDidMount),还有一个viewDidAppear方法(所以我基本上是在询问viewDidAppear的React/JS版本?)
关于可能重复的问题:在我看来,这似乎是相当不同的问题,而且这个问题更多地集中在React.js上。
发布于 2015-04-12 08:28:22
使用页面可见性api或仅使用窗口的焦点事件。我建议把备份计时器设为一分钟左右.这些事件可以是挑剔的。
除了绑定到全球事件之外,没有什么反应是具体的。
发布于 2015-04-12 06:37:07
您可以使用jQuery并收听localStorage on change事件:
$(window).bind('storage', function (e) {
console.log(e.originalEvent.key, e.originalEvent.newValue);
});这样,一旦本地存储中的一个键发生变化,您就可以在第二个选项卡中反映它。
如果使用react,那么请确保在主组件的render()函数中呈现一个组件,该函数利用主组件的state对象。一旦本地存储发生变化,相应地更新state并作出反应将负责其余的事务。
发布于 2015-04-12 20:10:27
我将以下代码行添加到我的主组件中。
在componentDidMount中:
document.addEventListener("visibilitychange", this._callbackFunc, false);在componentWillUnmount中:
document.removeEventListener("visibilitychange", this._callbackFunc, false);https://stackoverflow.com/questions/29586662
复制相似问题