![](/img/trans.png)
[英]Dynamically generating query params with react-router v6 and useNavigate
[英]How to migrate useHistory.replace(x, y) with useNavigate in react-router v6?
我在一個我還不完全熟悉的代碼庫中將 react-router-dom 從 v5 升級到 v6,我很好奇如何替換以下代碼:
const history = useHistory();
history.replace(url, params);
在文檔中,它們僅顯示在有 1 個參數的情況下您要替換的內容。 所以如果我有:
history.replace(url)
我只是這樣做:
const navigate = useNavigate();
navigate(url, {replace: true})
如何確保第二個參數與 useNavigate 掛鈎?
我很想這樣做:
const navigate = useNavigate();
navigate(url, params)
或者
const navigate = useNavigate();
navigate(url, { state: params })
應該如何更換才不會造成影響?
狀態在state
屬性下的第二個參數中發送,與指示重定向 (REPLACE) 與導航 (PUSH) 相同。
useNavigate
鈎子返回一個navigate
函數:
declare function useNavigate(): NavigateFunction; interface NavigateFunction { ( to: To, options?: { replace?: boolean; state?: any } ): void; (delta: number): void; }
請注意,第二個參數是具有replace
和state
屬性的options
arg。
行動 | v5history = useHistory() |
v6navigate = useNavigate() |
---|---|---|
導航 | history.push(url) |
navigate(url) |
重定向 | history.replace(url) |
navigate(url, { replace: true }) |
導航 w/狀態 | history.push(url, params) |
navigate(url, { state: params }) |
重定向帶狀態 | history.replace(url, params) |
navigate(url, { replace: true, state: params }) |
navigate(url, params)
僅在params
是具有replace
和/或state
屬性的對象時才有效,例如{ replace: true, state: { ... } }
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.