Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Как работает action в data маршрутах, и зачем он нужен?

Этот вопрос проверяет знание концепции action

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

action обрабатывает POST, PUT, DELETE и другие запросы для маршрута. Он используется для выполнения операций, таких как отправка формы или обновление данных, и возвращает результат операции, доступный в компоненте.

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

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

Это функция, вызываемая при запросе POST или PUT на соответствующий маршрут.

const saveData = async ({ request }) => {
	const formData = await request.formData();
	const response = await fetch('/api/save', {
		method: 'POST',
		body: JSON.stringify(Object.fromEntries(formData)),
		headers: { 'Content-Type': 'application/json' },
	});
	if (!response.ok) throw new Error('Failed to save data');
	return response.json();
};

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

Настройте маршрут с action:

const router = createBrowserRouter([
	{
		path: "/form",
		element: <Form />,
		action: saveData,
	},
]);

Обработка отправки формы:

Используйте <Form> из React Router:

import { Form } from 'react-router-dom';
const FormComponent = () => (
	<Form method="post">
		<input name="name" type="text" />
		<button type="submit">Отправить</button>
	</Form>
);

Получение результата:

Результат операции доступен через useActionData.

import { useActionData } from 'react-router-dom';
const Form = () => {
	const result = useActionData();
	return result ? <p>Данные сохранены</p> : null;
};

Итог: action упрощает обработку запросов, связанных с изменением данных, и интегрируется с маршрутизацией.

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • React Router

    React Router

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

#api

#async

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