主控台
分支
main (6.23.1)dev
版本
6.23.1v4/5.xv3.x
useLoaderData

useLoaderData

此 Hook 會提供從路由載入器傳回的值。

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} />
);

呼叫路由 ACTIONS 之後,資料會自動重新驗證,並傳回載入器的最新結果。

請注意,useLoaderData 並不會啟動取用。它只是讀取 React Router 內部管理的取用結果,因此您不必擔心在因路由以外的原因重新渲染時,會重新取用。

這也表示傳回的資料在渲染之間是穩定的,因此您可以安全地將其傳遞給 React Hook(例如 useEffect)中的相依性陣列。它只會在動作或特定導覽後再次呼叫載入器時變更。在這種情況下,身分會變更(即使值不會變更)。

您可以在任何元件或自訂 Hook 中使用此 Hook,而不只是 Route 元素。它會從最接近的路由中返回內容。

若要取得頁面上任何已啟用路由的資料,請參閱 useRouteLoaderData