应对:如果未保存数据,如何取消componentWillUnmount()方法

时间:2018-09-17 15:25:05

标签: reactjs

如果不保存数据,我想取消componentWillUnmount()方法。我有一个状态属性IsSaved,它定义是否保存数据? 我想写点东西     componentWillUnmount()     {        如果(!已保存)        {          //取消卸载停留在同一组件上        }     } 这可能吗?还是我需要通过其他方式实现它?

1 个答案:

答案 0 :(得分:0)

您不能取消“ componentWillMount”,因为它是生命周期回调。 您可以做的是避免卸下组件。 因此,如果您可以阻止传播会导致卸下组件的操作,那么这是解决问题的正确方法。

注意:

如果组件卸载是由react-router触发的,则可以尝试 setRouteLeaveHook

componentWillMount() {
    this.unregisterLeaveHook = props.router.setRouteLeaveHook(props.route, this.routerWillLeave.bind(this));
}

routerWillLeave(nextLocation) {
  return false;        
}

当您要卸载组件时,请注销钩子:

componentWillUnmount() {
    this.unregisterLeaveHook();
}

ref:How can I prevent the unmount in React Components?