【发布时间】:2022-01-04 02:36:19
【问题描述】:
如果用户离开表单页面,我想弹出一个模式,告诉他们如果他们离开,他们的更改将丢失,并且他们可以选择离开或取消。
我看到最近从 beta 到 V6 的更改取消了对 Prompt、useBlocker 和 useHistory 的使用。我已经看到了使用 onBeforeUnload 的答案,但这似乎只使用内置提示。
有没有办法用 useNavigate 钩子做到这一点?
【问题讨论】:
如果用户离开表单页面,我想弹出一个模式,告诉他们如果他们离开,他们的更改将丢失,并且他们可以选择离开或取消。
我看到最近从 beta 到 V6 的更改取消了对 Prompt、useBlocker 和 useHistory 的使用。我已经看到了使用 onBeforeUnload 的答案,但这似乎只使用内置提示。
有没有办法用 useNavigate 钩子做到这一点?
【问题讨论】:
这是 GitHub 上的一个类似问题 https://github.com/remix-run/react-router/issues/8139。
一个可能的解决方案是使用UNSAFE_NavigationContext,如果它公开了block 选项。见https://github.com/remix-run/react-router/issues/8139#issuecomment-977790637。
我使用 "react-router-dom": "^6.0.2" 对其进行了测试,现在它 [作为一种解决方法] 有效。
【讨论】: