React Router API Reference
    Preparing search index...

    Function useOutletContext

    • Returns the parent route <Outlet context>.

      Often parent routes manage state or other values you want shared with child routes. You can create your own context provider if you like, but this is such a common situation that it's built-into <Outlet>.

      // Parent route
      function Parent() {
      const [count, setCount] = React.useState(0);
      return <Outlet context={[count, setCount]} />;
      }
      // Child route
      import { useOutletContext } from "react-router";

      function Child() {
      const [count, setCount] = useOutletContext();
      const increment = () => setCount((c) => c + 1);
      return <button onClick={increment}>{count}</button>;
      }

      If you're using TypeScript, we recommend the parent component provide a custom hook for accessing the context value. This makes it easier for consumers to get nice typings, control consumers, and know who's consuming the context value.

      Here's a more realistic example:

      import { useState } from "react";
      import { Outlet, useOutletContext } from "react-router";

      import type { User } from "./types";

      type ContextType = { user: User | null };

      export default function Dashboard() {
      const [user, setUser] = useState<User | null>(null);

      return (
      <div>
      <h1>Dashboard</h1>
      <Outlet context={{ user } satisfies ContextType} />
      </div>
      );
      }

      export function useUser() {
      return useOutletContext<ContextType>();
      }
      import { useUser } from "../dashboard";

      export default function DashboardMessages() {
      const { user } = useUser();
      return (
      <div>
      <h2>Messages</h2>
      <p>Hello, {user.name}!</p>
      </div>
      );
      }

      Type Parameters

      • Context = unknown

      Returns Context

      The context value passed to the parent Outlet component