Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React Router: loader, api, async

Как передавать данные через loader в data маршрутах?

Этот вопрос проверяет понимание работы loader для передачи данных в компоненты маршрутов

Короткий ответ

loader в data маршрутах используется для загрузки данных перед рендерингом компонента. Он возвращает данные, которые затем доступны через хук useLoaderData внутри компонента.

Длинный ответ

Определение loader:

Это функция, которая асинхронно загружает данные.

const fetchData = async () => {
	const response = await fetch('/api/data');
	if (!response.ok) throw new Error('Failed to load data');
	return response.json();
};

Пример использования loader:

Определите маршрут с loader:

import { createBrowserRouter, RouterProvider } from 'react-router-dom';
const router = createBrowserRouter([
	{
		path: "/",
		element: <Home />,
		loader: fetchData,
	},
]);
const App = () => <RouterProvider router={router} />;

Получение данных в компоненте:

Используйте хук useLoaderData:

import { useLoaderData } from 'react-router-dom';
const Home = () => {
	const data = useLoaderData();
	return <div>{JSON.stringify(data)}</div>;
};

Обработка ошибок:

  • Если loader выбрасывает ошибку, срабатывает errorElement.

Преимущества:

  • Сокращение времени рендеринга, так как данные загружаются до показа компонента.

  • Централизованная обработка данных маршрутов.

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • React Router

    React Router

Ключевые слова

#loader

#api

#async

Подпишись на React Developer в телеграм