React组件卸载、路由跳转、页面关闭(刷新)之前进行提示

本文探讨了在React中如何在组件卸载、路由跳转和页面关闭时实现提示功能。通过路由守卫和窗口关闭事件监听,确保用户在离开页面或跳转前收到警告。在路由跳转时,利用`componentWillUnmount`配合自定义组件实现提醒;而在窗口关闭时,利用`window.addEventListener`进行事件监听,并在`componentDidMount`和`componentWillUnmount`中分别添加和移除事件处理函数。需要注意的是,`beforeunload`事件的返回值在某些浏览器中的表现和限制。
摘要由CSDN通过智能技术生成

React组件卸载生命周期、路由跳转和页面关闭三者看起来有些类似的地方,比如都是当前组件即将从视口消失,但实际上所触发的事件均不相同。以一个实际案例出发:

某单页应用的 文章编辑页用户正在编辑文章,此时尚未保存。

当用户不小心要跳转到另外一个路由时需要提醒用户是否继续跳转,这个过程需要触发路由跳转以及组件卸载

而用户不小心点了关闭标签页按钮,或刷新了页面。这个过程触发了页面卸载事件;

在这个案例中我们需要实现:

1. 用户跳转页面时弹出提示框(路由采用histroy模式)

2. 用户关闭页面时弹出提示框

componentWillUnmount

首先这个钩子函数是在组件卸载前调用的一个函数,它并不能阻止当前组件的卸载。所以不要想方设法在这里做提示,因为即便提示了,组件还是会卸载,文章还是会消失。

路由守卫-<Prompt/>

为了实现第一个功能,需要一个跳转路由之前进行的判断。在react-router-dom 4.0 之后取消了先前的路由守卫(其实我没研究过之前版本的,这个描述摘自网络)。在react-router-dom 4.0之后,实现这个功能可以依靠<Prompt/>组件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值