Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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 storage eventlistener未与对localstorage的任何更新一起工作_Javascript_Reactjs_Addeventlistener - Fatal编程技术网

Javascript storage eventlistener未与对localstorage的任何更新一起工作

Javascript storage eventlistener未与对localstorage的任何更新一起工作,javascript,reactjs,addeventlistener,Javascript,Reactjs,Addeventlistener,在我的componentDidMount中,我试图删除一个localstorage项,并为localstorage中的进一步更改添加一个事件侦听器,但它不起作用 componentDidMount() { localStorage.removeItem("receivedLocation"); window.addEventListener("storage", event => { console.log("Event listener triggered

在我的componentDidMount中,我试图删除一个localstorage项,并为localstorage中的进一步更改添加一个事件侦听器,但它不起作用

  componentDidMount() {
    localStorage.removeItem("receivedLocation");
    window.addEventListener("storage", event => {
      console.log("Event listener triggered");
      if (event.key === "receivedLocation" && event.newValue === true) {
        this.setState({
          receivedLocation: true
        });
      }
    });
  }
然而,如果我删除更新项,它就可以正常工作

  componentDidMount() {
    window.addEventListener("storage", event => {
      console.log("Event listener triggered");
      if (event.key === "receivedLocation" && event.newValue === true) {
        this.setState({
          receivedLocation: true
        });
      }
    });
  }

我无法重置localstorage,也无法监听localstorage中未来的更改,存储事件不会触发。它用于通知应用程序中其他打开的选项卡某些更改

窗口界面的存储事件在存储区域打开时激发 (localStorage或sessionStorage)已在的上下文中修改 另一份文件

如果试图通知当前选项卡中的其他组件,则可以使用

const event = new Event('EVENT_NAME', { detail: { yourPayload }});
window.dispatchEvent(event);

// in your component
window.addEventListener('EVENT_NAME', configChangedHandler, false);

// cleanup
window.removeEventListener('EVENT_NAME', configChangedHandler);


您是否在第一个代码块中发布了错误的示例?它们看起来一模一样