Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS/React的ViewDidIsked方法?_Javascript_Reactjs - Fatal编程技术网

Javascript JS/React的ViewDidIsked方法?

Javascript JS/React的ViewDidIsked方法?,javascript,reactjs,Javascript,Reactjs,比如说,有两个选项卡打开了同一个网页在一个选项卡上,我在localStorage中做了一些更改,然后,当我转到另一个选项卡时,我希望看到这些更改,而不必重新加载页面。 我曾经想到的一种方法是使用setInterval方法,但是对于我的应用程序,我并不需要每隔3-5秒检查更新,所以我觉得这种方法并不理想 我在用ReactTLDR:有没有一种好方法可以在我打开以前加载的网页的选项卡后立即更新数据? iOS用户的旁注:在iOS上,有一个viewDidLoad方法(据我所知,它类似于component

比如说,有两个选项卡打开了同一个网页在一个选项卡上,我在localStorage中做了一些更改,然后,当我转到另一个选项卡时,我希望看到这些更改,而不必重新加载页面。

我曾经想到的一种方法是使用
setInterval
方法,但是对于我的应用程序,我并不需要每隔3-5秒检查更新,所以我觉得这种方法并不理想

我在用ReactTLDR:有没有一种好方法可以在我打开以前加载的网页的选项卡后立即更新数据?


iOS用户的旁注:在iOS上,有一个
viewDidLoad
方法(据我所知,它类似于
componentDidMount
),还有一个
viewdide
方法(因此,我基本上要求的是
viewdide>的React/JS版本)



关于可能重复的问题:对我来说,似乎完全不同,这个问题更关注React.js。

您可以使用jQuery并在更改事件上收听localStorage:

 $(window).bind('storage', function (e) {
     console.log(e.originalEvent.key, e.originalEvent.newValue);
 });
这样,一旦本地存储中的某个键发生更改,您就可以在第二个选项卡中反映它


如果使用的是react,请确保在主组件的render()函数中渲染组件,该函数使用主组件的
状态
对象。一旦本地存储发生更改,相应地更新
状态
,react将处理其余部分。

使用页面可见性api或仅使用窗口的焦点事件。我建议将备份计时器设置为一分钟左右。。。这些活动可能很挑剔


关于它没有什么特别的,除了。

我在我的主要组件中添加了以下代码行

在componentDidMount中:

document.addEventListener("visibilitychange", this._callbackFunc, false);
在componentWillUnmount中:

document.removeEventListener("visibilitychange", this._callbackFunc, false);

“进行更改”是指您只是在更改客户端中的某些内容,还是在服务器中也做了一些工作?如果没有,则不可能(考虑到当前设置)在第二个选项卡中反映更改,因为它不知道第一个选项卡我正在对localStorage进行更改,这两个网页都可以访问localStorage,并且还应考虑:。反应:当本地存储更改时,我当前会更新状态,但它只在当前页面上起作用。我会调查的,我可能做得不对。JQuery:如果我不能对工作做出反应,我会将JQuery添加到应用程序中(目前没有使用),并尝试一下。非常感谢!这里,有一个想象中的巧克力饼干!我在componentDidMount方法中添加了“visibilitychange”的事件侦听器