主分支
分支
主分支 (6.23.1)开发分支
版本
6.23.1v4/5.xv3.x
useLoaderData

useLoaderData

此钩子提供路由加载器返回的值。

import {
  createBrowserRouter,
  RouterProvider,
  useLoaderData,
} from "react-router-dom";

function loader() {
  return fetchFakeAlbums();
}

export function Albums() {
  const albums = useLoaderData();
  // ...
}

const router = createBrowserRouter([
  {
    path: "/",
    loader: loader,
    element: <Albums />,
  },
]);

ReactDOM.createRoot(el).render(
  <RouterProvider router={router} />
);

在路由 操作 被调用后,数据将被自动重新验证,并返回加载器最新的结果。

请注意,useLoaderData *不会启动获取*。它只是读取 React Router 在内部管理的获取结果,因此您无需担心它在因路由之外的原因而重新渲染时重新获取。

这也意味着返回的数据在渲染之间是稳定的,因此您可以安全地将其传递给 React 钩子(如 useEffect)中的依赖项数组。它只会在操作或某些导航后再次调用加载器时更改。在这些情况下,身份将更改(即使值没有更改)。

您可以在任何组件或任何自定义钩子中使用此钩子,而不仅仅是 Route 元素。它将从上下文中返回最近路由的数据。

要从页面上的任何活动路由获取数据,请参阅 useRouteLoaderData.