declare function Link(props: LinkProps): React.ReactElement;
interface LinkProps
extends Omit<
React.AnchorHTMLAttributes<HTMLAnchorElement>,
"href"
> {
replace?: boolean;
state?: any;
to: To;
reloadDocument?: boolean;
preventScrollReset?: boolean;
relative?: "route" | "path";
}
type To = string | Partial<Path>;
在react-router-dom中,<Link>被渲染为一个可访问的<a>元素,具有指向其链接资源的实际href。你可以使用<Lik reloadDocument>跳过客户端路由,让浏览器正常处理过渡。
import React from "react";
import { Link } from "react-router-dom";
function UsersIndexPage({ users }) {
return (
<div>
<h1>Users</h1>
<ul>
{users.map((user) => (
<li key={user.id}>
<Link to={user.id}>{user.name}</Link>
</li>
))}
</ul>
</div>
);
}
// Contact and EditContact do not share additional UI layout
<Route path="/" element={<Layout />}>
<Route path="contacts/:id" element={<Contact />} />
<Route
path="contacts/:id/edit"
element={<EditContact />}
/>
</Route>;
function EditContact() {
// 由于Contact不是EditContact的父级,
// 我们需要在路径中向上移动一层,
// 而不是在Route层次结构中向上移动一层
return (
<Link to=".." relative="path">
Cancel
</Link>
);
}
<Link to="?tab-one" preventScrollReset={true} />
<Link to="new-path" state={{ some: "value"}}>
lte { state } = useLocation()