Edw*_*han 5 javascript reactjs
我有一个名为 Home 的 React 组件。在 Home 中,我有一个函数“urlListener”,我在其中添加了一个事件侦听器,以在 URL 更改时发出警报。
var Home = React.createClass({
getInitialState: function () {
return {
openedFile: this.props.location.query.file || '',
apps: [],
showNav: this.props.location.query.file ? false : true,
layout: 'row',
cloneAppName: 'New Application',
appName: 'Application Name',
showSave: false
}
},
urlListener: function(){
window.addEventListener("hashchange", function(){
saveUnsaved();
});
},
saveUnsaved: function(){
}Run Code Online (Sandbox Code Playgroud)
监听器工作正常,只要 URL 发生变化就会被调用。但是,控制台说我尝试调用的函数不是函数。我是 React 的新手,对此的任何帮助将不胜感激。
有人评论了似乎对我有用的答案,但在我接受答案之前该评论已被删除。正确的做法是
{() => this.saveUnsaved();}Run Code Online (Sandbox Code Playgroud)
箭头函数显然在内部将上下文从“window”切换到“this”(当前组件)。如果没有箭头功能,“this”将指代“窗口”组件。