Что такое Outlet

Ответ

Outlet — это компонент в React Router (v6+), который используется для рендеринга дочерних маршрутов. Он работает как placeholder, куда вставляются компоненты, соответствующие текущему URL.

Пример:

import { Outlet } from 'react-router-dom';

function Layout() {
  return (
    <div>
      <header>Шапка сайта</header>
      <main>
        <Outlet /> {/* Здесь появятся дочерние компоненты маршрутов */}
      </main>
      <footer>Подвал</footer>
    </div>
  );
}

Особенности:

  • Позволяет создавать вложенные маршруты
  • Сохраняет состояние родительского компонента при переключении дочерних
  • Может использоваться с useOutletContext для передачи данных между родителем и дочерними компонентами

Ответ 18+ 🔞

Слушай, а вот есть в этом вашем React Router такая штука — Outlet. Ну, это типа дырка в коде, куда другие компоненты проваливаются, как в унитаз, когда URL подходящий.

Смотри, как это выглядит, блядь:

import { Outlet } from 'react-router-dom';

function Layout() {
  return (
    <div>
      <header>Вот эта наша шапка, да</header>
      <main>
        <Outlet /> {/* А вот тут, ёпта, будет магия! Сюда прилетает всё, что нужно */}
      </main>
      <footer>Ну и подвальчик, куда ж без него</footer>
    </div>
  );
}

В чём прикол-то, спросишь? А прикол в том, что:

  • Это как матрёшка, блядь. Внутри одного маршрута можно другие пихать — вложенные, короче.
  • Родительский компонент (наш Layout) не сходит с ума и не перерисовывается с нуля каждый раз. Он стоит себе, как скала, а внутри у него в этой дырке (<Outlet />) контент меняется. Удобно же, ёбана!
  • Ещё можно из родителя в детей данные протолкнуть, типа useOutletContext. Ну, чтобы не орать через всё приложение, а шепнуть на ушко прямо в Outlet. Хитрая жопа, но работает.