[英]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.