当前位置: 首页 > news >正文

React Route v6. 如何防止用户导航到另一个页面

优质博文:IT-BLOG-CN

题目

我正在用ReactTypeScript制作一个项目。当有未保存的更改时,我找不到如何阻止用户导航到另一个页面。为了更清楚起见 - 我知道如何做剩下的事情,我只需要一些可以阻止它处理直到用户确认的东西。任何关于React-Router V6解决方案的链接都将不胜感激。此外,我可以尝试任何其他方法而不是React-Router来解决这个问题。我制作了BeforeUnloadEvent,但它仅在用户重新加载页面或导航到另一个网站时才有效。如果用户在应用程序内更改页面,它就不起作用。

我使用:

"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router-dom": "^6.26.2",
"react-scripts": "^5.0.1",
"typescript": "^5.6.2"
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';

我尝试了不同的useEffects,例如:

useEffect(() => {if (isDirty) {          setIsOpen(true);setNextLocation(location.pathname);}
}, [location.pathname]);

但我不明白如何添加“停止或暂停导航”。因为它是v6,所以很多互联网上常用的解决方案都不适用于它,例如PromptusePropmpt.listen.blockBeforeUnload。此外,我尝试过

useBeforeUnload(useCallback(e => {if (isDirty) {e.preventDefault();return '';}}, [isDirty])
); 

但它也不会停止导航(它的作用与BeforeUnloadEvent相同)。

解决方案

尝试实现一个利用useEffect钩子和usePrompt方法的自定义钩子解决该问题。


http://www.mrgr.cn/news/45825.html

相关文章:

  • 数据结构-4.6.KMP算法(旧版下)-朴素模式匹配算法的优化
  • aws(学习笔记第四课) AWS的IAM服务,用于授权的策略,用户和组以及角色
  • docker compose入门5—创建一个3副本的应用
  • ◇【论文_20181020 v6】广义优势估计器 (generalized advantage estimator, GAE)
  • PicGo 配置 GitHub 作为后端存储,打造免费的图床工具
  • 知识改变命运 数据结构【java对象的比较】
  • Kubernetes 深度洞察:StatefulSet 之存储状态探秘
  • 多模态方法总结
  • 车辆重识别(2021NIPS无分类器扩散指南)论文阅读2024/10/08
  • 前端开发中的高级技巧与最佳实践
  • [Python学习日记-42] Python 中的生成器
  • 【计算机毕设】springboot-考研资讯平台(附源码)
  • 大数据新视界 --大数据大厂之 Hudi 数据湖框架性能提升:高效处理大数据变更
  • QD1-P1 HTML、CSS与JS三者之间的关系
  • 【linux】进程间的通信(一)
  • Rust语言发展历程
  • JavaScript 变量的简单学习
  • 力扣206.反转链表
  • 栈_1(2024年10月08日)
  • idea2024版本maven依赖刷新规则