react-router:beforeunload事件不适用于路由更改

时间:2017-02-27 11:49:25

标签: reactjs react-router

这是我的代码:

constructor( props ) {
super( props )
this.state = {
  newOrganizationCountry            : ''
}
this.handleChange = this.handleChange.bind( this )
this.handleSubmit = this.handleSubmit.bind( this )
this.handleChangeOfTimeZone = this.handleChangeOfTimeZone.bind( this )    

this.onUnload = this.onUnload.bind(this); // if you need to bind callback to this
    this.handleChangeOfStartDate = this.handleChangeOfStartDate.bind( this )
{ 
  /* 
  -> Time Zone detail
  -> https://raw.githubusercontent.com/yury-dymov/react-bootstrap-timezone-picker/master/src/timezones.json
  */ 
}


onUnload(event) { // the method that will be used for both add and remove event
  console.log("hellooww")
  event.returnValue = "Hellooww"
}

componentWillMount() {
      window.removeEventListener("beforeunload", this.onUnload)

}


componentDidMount() {
if(this.state!=null){
      window.removeEventListener("beforeunload", this.onUnload)
    }
}

当我在更改表单中的内容后关闭窗口并且它要求我确认退出时,这是有效的。 但是当我点击其他页面/链接/路线时,我希望它能够正常工作。 请建议我一切有效。 感谢

1 个答案:

答案 0 :(得分:0)

当您在react-router中单击任何Link时,新链接将被推送到您的浏览器历史记录中。因此,这只是变化无常的链接,并且具有preventDefault()

您无法执行此操作,但是例如,您可以向页面中的所有链接添加事件,以在您要退出当前页面时显示消息。