Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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 如何在react js中收听会话存储?_Javascript_Reactjs_Dom Events_Session Storage - Fatal编程技术网

Javascript 如何在react js中收听会话存储?

Javascript 如何在react js中收听会话存储?,javascript,reactjs,dom-events,session-storage,Javascript,Reactjs,Dom Events,Session Storage,我想听听SessionStorage中的每一个变化。有没有办法在它改变的时候听它? 我正在使用react类 class Module extends React.Component { constructor(props) { super(props); this.handleClick = this.handleClick.bind(this); this.state = { .... }; } handleClick(e) {

我想听听
SessionStorage
中的每一个变化。有没有办法在它改变的时候听它? 我正在使用react类

class Module extends React.Component {
  constructor(props) {
    super(props);
    this.handleClick = this.handleClick.bind(this);
    this.state = {
      ....
    };
  }


  handleClick(e) {
    const value = e.currentTarget.textContent;
    sessionStorage.setItem("AnyValue", value);
  }

  render() {
    return (
      <div
        onClick={this.handleClick}
      >
        {this.props.id}
      </div>
    );
  }
}
类模块扩展React.Component{
建造师(道具){
超级(道具);
this.handleClick=this.handleClick.bind(this);
此.state={
....
};
}
handleClick(e){
常量值=e.currentTarget.textContent;
setItem(“AnyValue”,value);
}
render(){
返回(
{this.props.id}
);
}
}
你可以这样做

componentDidMount() {
  window.addEventListener('storage', () => {
    console.log("CHANGED!!!");    
  });
}
记住卸载侦听器

componentWillUnmount() {
  window.removeEventListener('storage');
}

不,你应该创建上下文或reducer来进行更改,并期望重新加载,如果你的应用程序有大量数据,你可能应该使用Redux。似乎它不起作用@nemanjawawhat完全不起作用,当您在会话存储中进行更改时,是否获得了
控制台.log
?我看不到控制台登录我想您在其他地方遇到了问题,而不是上面的侦听器。调用
handleClick
后,您是否看到会话存储更新?您可以在DevTools->Application选项卡->会话存储中观察会话存储。此外,如果继续并在其中手动添加/编辑值,您应该会看到console.log消息被触发。