Skip to content

URL 传值

路由参数

路由参数从动态参数中解析。

tsx
<Route path="/concerts/:city" element={<City />} />

在上面的案例中,city 是一个路由参数,它可以从 useParams 钩子中获取。

tsx
import { useParams } from "react-router";

function City() {
  let { city } = useParams();
  let data = useFakeDataLibrary(`/api/v2/cities/${city}`);
  // ...
}

URL 查询参数

查询参数是 URL 中 ? 后面的值。可通过 useSearchParams 来获取它们,该函数会返回一个 URLSearchParams 的实例。

tsx
function SearchResults() {
  let [searchParams] = useSearchParams();
  return (
    <div>
      <p>
        You searched for <i>{searchParams.get("q")}</i>
      </p>
      <FakeSearchResults />
    </div>
  );
}

Location 对象

React Router 会创建一个自定义 location 对象,该对象包含一些有用的信息,可通过 useLocation 来获取这些信息。

ts
function useAnalytics() {
  let location = useLocation();
  useEffect(() => {
    sendFakeAnalytics(location.pathname);
  }, [location]);
}

function useScrollRestoration() {
  let location = useLocation();
  useEffect(() => {
    fakeRestoreScroll(location.key);
  }, [location]);
}

Released under the MIT License.