useNavigate
useNavigate
Hook 會回傳一個函式,讓您可以在瀏覽器中根據使用者互動或效果以程式化的方式導覽。
import { useNavigate } from "@remix-run/react";
function SomeComponent() {
const navigate = useNavigate();
return (
<button
onClick={() => {
navigate(-1);
}}
/>
);
}
在 action
和 loader
中,使用 redirect
通常比此 Hook 更佳,但它仍然有其使用情境。
to: string
最基本用法是使用 href 字串
navigate("/some/path");
路徑可以是相對的
navigate("..");
navigate("../other/path");
useResolvedPath
文件中的 Splat 路徑章節,以了解關於 splat 路由中相對 useNavigate()
行為的 future.v3_relativeSplatPath
future 旗標的說明
to: Partial<Path>
您也可以傳遞 Partial<Path>
值
navigate({
pathname: "/some/path",
search: "?query=string",
hash: "#hash",
});
to: Number
傳遞數字會告訴瀏覽器在歷史堆疊中向後或向前移動
navigate(-1); // go back
navigate(1); // go forward
navigate(-2); // go back two
請注意,這可能會將您導出應用程式,因為瀏覽器的歷史堆疊並未限定於您的應用程式。
options
第二個參數是一個選項物件
navigate(".", {
replace: true,
relative: "path",
state: { some: "state" },
});
"route" | "path"
- 定義連結的相對路徑行為"route"
將使用路由層級結構,因此 ".."
會移除目前路由模式的所有 URL 片段,而 "path"
將使用 URL 路徑,因此 ".."
會移除一個 URL 片段<ScrollRestoration>
,請防止導覽時將捲動位置重設為視窗頂部ReactDOM.flushSync
呼叫中,而不是預設的 React.startTransition
document.startViewTransition()
中,為此導覽啟用 View TransitionuseViewTransitionState()