Link
类型声明
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>
);
}
relative
默认情况下,链接相对于路由层次结构,因此..
将上升一层路由。但是在有些情况下,你发现匹配的URL模式没有嵌套的意义,并且你更愿意使用相对路径。
// 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>
);
}
preventScrooReset
如果你正在使用<ScrollRestoration>,这将使你在连接被点击时防止滚动位置被重置到窗口顶部。
<Link to="?tab-one" preventScrollReset={true} />
这并不会阻止用户使用浏览器的“后退/前进”按钮返回到该位置时恢复滚动位置,它只是防止用户点击链接时候重置滚动位置。
replace
如果你想通过history.replaceState替换历史堆栈中的当前条目,而不是默认使用history.pushState,则可以使用replace属性。
state
state属性可以用于设置一个有状态值,该值存储在history state中,用于新位置,随后,可以通过useLocatio()访问此值。
<Link to="new-path" state={{ some: "value"}}>
你可以在即将跳转到的路由上访问此状态。
lte { state } = useLocation()
最后更新于
这有帮助吗?