我有三个组件C1、C2、C3映射在路线上/c1
, /c2/
, /c3
.
我想阻止组件C3
从允许(通过浏览器事件处理)返回到C2
而是直接转到C1
.
我该如何实现这一目标?
需要此功能是因为 C2 充当
“后重定向”。想象一下浏览器执行 POST 的情况
操作,当您刷新页面时,它会询问您是否要
重新提交表格。嗯,这正是我的情况。
在这种情况下,您可以在流程中重定向以维护您想要的历史堆栈。这样做后,任何后退导航(来自代码或浏览器后退按钮的命令式/声明式)都会导致返回到您希望用户返回的正确页面。
Action |
History Stack |
Path |
Back Location |
initial |
["/"] |
"/" |
~ |
PUSH "/c1" |
["/", "/c1"] |
"/c2" |
"/" |
PUSH "/c1/c2" |
["/c1", "/c1/c2"] |
"/c1/c2" |
"/c1" |
REPLACE "/c1/c3" |
["/c1", "/c1/c3"] |
"/c1/c3" |
"/c1" |
POP (1) |
["/c1"] |
"/c1" |
~ |
使用命令式导航react-router-dom
:
-
v5 使用useHistory
hook
- use
history.push
用于正常导航
- use
history.replace
用于重定向
- use
history.back
或 `history.go(-1) 返回上一页
-
v6 使用useNavigate
hook.
- use
navigate(to)
用于正常导航
- use
navigate(to, { replace: true })
用于重定向
- use
navigate(-1)
返回上一页
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)