簡體   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