繁体   English   中英

react-router-dom: go 在 go 返回事件的历史上两次返回

[英]react-router-dom: go back twice in history on go back event

我在路由/c1/c2//c3上映射了三个组件C1、C2、C3

我想阻止组件C3允许(通过浏览器事件处理)返回C2 ,而是直接返回 go 到C1

我如何实现这一目标?

此功能是必需的,因为 C2 充当“post-and-redirect”。 想象一下浏览器执行 POST 操作的情况,当您刷新页面时,它会询问您是否要重新提交表单。 嗯,这正是我的情况。

在这种情况下,您可以在流程中重定向以维护您想要的历史堆栈。 这样做之后,任何返回导航(来自代码或浏览器的返回按钮的命令式/声明式)都会导致返回到您希望用户返回到 go 的正确页面。

行动 历史堆栈 小路 返回位置
最初的 ["/"] "/" ~
推“/c1” ["/", "/c1"] "/c2" "/"
推“/c1/c2” ["/c1", "/c1/c2"] "/c1/c2" "/c1"
替换“/c1/c3” ["/c1", "/c1/c3"] "/c1/c3" "/c1"
流行音乐 (1) ["/c1"] "/c1" ~

要在react-router-dom中使用命令式导航:

  • v5 使用useHistory钩子

    • 使用history.push进行正常导航
    • 使用history.replace进行重定向
    • 使用history.back或 `history.go(-1) 到 go 返回一个页面
  • v6 使用useNavigate挂钩。

    • 使用navigate(to)进行正常导航
    • 使用navigate(to, { replace: true })进行重定向
    • 使用navigate(-1)到 go 返回一个页面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM