Как работает 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

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

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