路由参数是从动态段解析出来的值。
<Route path="/concerts/:city" element={<City />} />
在此情况下,:city
是动态段。该城市的解析值将可通过 useParams
获取。
import { useParams } from "react-router";
function City() {
let { city } = useParams();
let data = useFakeDataLibrary(`/api/v2/cities/${city}`);
// ...
}
搜索参数是 URL 中 ?
后面的值。它们可通过 useSearchParams
获取,该 hook 返回一个 URLSearchParams
实例。
function SearchResults() {
let [searchParams] = useSearchParams();
return (
<div>
<p>
You searched for <i>{searchParams.get("q")}</i>
</p>
<FakeSearchResults />
</div>
);
}
React Router 创建了一个自定义的 location
对象,其中包含一些有用的信息,可通过 useLocation
获取。
function useAnalytics() {
let location = useLocation();
useEffect(() => {
sendFakeAnalytics(location.pathname);
}, [location]);
}
function useScrollRestoration() {
let location = useLocation();
useEffect(() => {
fakeRestoreScroll(location.key);
}, [location]);
}