首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >React实现离开页面弹窗提示

React实现离开页面弹窗提示

原创
作者头像
起名字好难iii
发布2024-01-27 15:38:52
发布2024-01-27 15:38:52
1.1K0
举报

效果演示

页面tab切换
页面tab切换
页面路由离开
页面路由离开

实现思路

由于我的项目是使用 react + umi + ant design 搭建的项目, 所以我的想法就是使用 umi 的 history 搭配 useEfftct 进行路由监听并且使用antd 的 model 弹窗,从而实现这个效果, 具体代码如下

代码语言:javascript
复制
 // 监听页面离开
  useEffect(() => {
    const unblock = history.block(({ location }) => {
      modal.confirm({
        title: '提示',
        content: '请确保您所编辑的内容已经发布,否则离开后不会进行保存?',
        onOk: () => {
          unblock() // 一定要这样子执行
          history.push(location.pathname)
        },
        onCancel: () => {}
      })
    })
    return () => {
      unblock()
    }
  }, [])

注意点 :

1. useEfftct 只需要书写, 因为需要在组件进入的时候就进行监听 , 但是不要在 useEfftct 进行路由的的监听,否则会一直触发

2. history 是 umi 的导出, 所以需要在自行导入

3. 在执行 onOk 的时候, 一定需要执行 unblock() 再进行跳转, 否则会出现错误

4. 在页面卸载之后也一定要在 useEffect 中进行卸载路由监听

🐤我非常乐意听取您的疑问和想法,欢迎在评论区留言

🐰您的每一条评论对我都至关重要,我会尽快回复

🎈如果这篇文章对您有所启发或帮助,欢迎赞赏、收藏或分享

🎁您的每一个动作都是对我创作的最大鼓励和支持

👍感谢您的阅读和陪伴,希望我的文章能给您带来一些帮助

🍻感谢您的支持,我会继续努力创作更多有价值的内容!

这篇文章的内容就介绍到这里,期待我们下次的相遇。感谢您花时间阅读,如果有任何问题或想法,欢迎在评论区留言。

结尾~
结尾~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 效果演示
  • 实现思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档