ReactJS window.addEventListener("hashchange") 不起作用

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 的新手,对此的任何帮助将不胜感激。

Edw*_*han 2

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

{() => this.saveUnsaved();}
Run Code Online (Sandbox Code Playgroud)

箭头函数显然在内部将上下文从“window”切换到“this”(当前组件)。如果没有箭头功能,“this”将指代“窗口”组件。