Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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 ReactJS window.addEventListener(“hashchange”)不工作_Javascript_Reactjs - Fatal编程技术网

Javascript ReactJS window.addEventListener(“hashchange”)不工作

Javascript ReactJS window.addEventListener(“hashchange”)不工作,javascript,reactjs,Javascript,Reactjs,我有一个叫做“家”的组件。在Home中,我有一个函数“urlListener”,其中我添加了一个事件侦听器,以便在URL发生更改时发出警报 var Home=React.createClass({ getInitialState:函数(){ 返回{ openedFile:this.props.location.query.file | |“”, 应用程序:[], showNav:this.props.location.query.file?false:true, 布局:“行”, cloneAp

我有一个叫做“家”的组件。在Home中,我有一个函数“urlListener”,其中我添加了一个事件侦听器,以便在URL发生更改时发出警报

var Home=React.createClass({
getInitialState:函数(){
返回{
openedFile:this.props.location.query.file | |“”,
应用程序:[],
showNav:this.props.location.query.file?false:true,
布局:“行”,
cloneAppName:“新应用程序”,
appName:'应用程序名称',
showSave:false
}
},
urlListener:function(){
addEventListener(“hashchange”,function()){
saveunsave();
});
},
saveunsave:function(){

}
有人对我似乎有用的答案发表了评论,但在我接受答案之前,该评论已被删除。正确的做法是


{()=>这个.saveunsave();}
非常适合我

// ES6:
componentDidMount() {
  window.addEventListener('popstate', this.handleOnUrlChange, false)
}
componentWillUnmount() {
  window.removeEventListener('popstate', this.handleOnUrlChange, false)
}
handleOnUrlChange = () => {
// your code
}

在侦听器函数中添加hi。saveunsave();而不是saveunsave();only@spankajd我已经试过了,但是同样的错误出现了。
window.addEventListener(“hashchange”,this.saveunsave)
;@JordanBurnett我已经试过了。得到了同样的错误。这应该会起作用。这个答案可以通过提到handleOnUrlChange上的胖箭头
=>
使答案起作用来改进。或者,你可以使用简洁的方法语法(即:
handleOnUrlChange(){…}
如果将其添加到构造函数中:
this.handleOnUrlChange=this.handleOnUrlChange.bind(this)
。如果这是您第一次体验到在React中使用fat arrow与不使用fat arrow与
的上下文非法更改之间的差异,您应该确保注意,因为它会再次发生。如果您看到函数调用被忽略,请考虑
=>
。绑定(this)