我有一个简单的react-component,用户可以在其中编辑数据。由于可能会更改的值可能需要一些时间,因此我想请用户在离开页面时进行确认,以防未保存更改。
我在组件的构造函数中调用:
window.addEventListener("beforeunload", this.handleWindowBeforeUnload);
我也尝试过
window.onbeforeunload = this.handleWindowBeforeUnload;
handleWindowBeforeUnload
看起来像这样:
private handleWindowBeforeUnload = (ev: BeforeUnloadEvent): string => {
return "Unsaved changes. Are you sure?";
}
但是,设置断点会命中。但是,没有任何迹象表明离开可能是危险的。也尝试使用最新的Firefox,但没有任何反应。 正如MDN所述,我也尝试过
// Cancel the event as stated by the standard.
e.preventDefault();
// Chrome requires returnValue to be set.
e.returnValue = '';
// return something to trigger a dialog
return null; // ''; // "Do something"
仍然没有任何反应。 我在这里做什么错了?
答案 0 :(得分:4)
您需要在生命周期方法内调用该方法:
componentDidMount() {
window.addEventListener("beforeunload", this.handleWindowBeforeUnload);
}
componentWillUnmount() {
window.removeEventListener("beforeunload", this.handleWindowBeforeUnload);
}