路由参数是从动态片段中解析的值。
<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
访问它们,该函数返回 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]);
}