useNavigate
useNavigate
钩子返回一个函数,允许您在浏览器中以编程方式响应用户交互或效果进行导航。
import { useNavigate } from "@remix-run/react";
function SomeComponent() {
const navigate = useNavigate();
return (
<button
onClick={() => {
navigate(-1);
}}
/>
);
}
在 action
和 loader
中使用 redirect
通常比使用此钩子更好,但它仍然有一些用例。
to: string
最基本的用法是使用 href 字符串
navigate("/some/path");
路径可以是相对路径
navigate("..");
navigate("../other/path");
future.v3_relativeSplatPath
未来标志对 splat 路由中相对 useNavigate()
行为的影响,请参阅 useResolvedPath
文档中的 Splat 路径 部分。
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()
中,为此导航启用 视图转换useViewTransitionState()