Многоступенчатая обработка форм с использованием React и Django Rest Framework

#reactjs #django-rest-framework #multi-step

#reactjs #django-rest-framework #многоступенчатая

Вопрос:

У меня есть трехэтапная форма для добавления истории в базу данных

введите описание изображения здесь

Когда пользователь заполняет форму первого шага, все данные первого шага будут добавлены в таблицу истории, и пользователь будет перенаправлен на второй шаг. Я написал три представления для первого, второго, третьего шага.

Мой вопрос в том, как мне управлять представлением второго шага и представлением третьего шага? Как я должен обновить историю на втором и третьем шаге? Должен ли я отправлять идентификатор обратно во внешний интерфейс и сохранять его в redux? А затем отправить этот идентификатор в серверную часть для второго и третьего шага?

Также как я должен повторно использовать эту форму в react для обновления?

Я могу предоставить более подробную информацию, если хотите

Ответ №1:

Я считаю, что «подходящего для всех» решения не существует, но в целом ваши мысли верны. Если есть данные, которые знает серверная часть, а ваш интерфейс нет, вы отправляете их обратно в качестве ответа. Итак, это было бы так:

  1. Отправить форму на серверную часть
  2. Серверные ответы либо с «OK», либо с данными, о которых должен знать интерфейс, либо с ошибками, если что-то пошло не так
  3. Переходите к следующему шагу и к 1, пока не закончите

Вы также можете просто сохранить все данные со всех трех шагов во внешнем интерфейсе, а затем отправить их целиком — в этом случае вы не получите частично заполненные данные в БД, но тогда вам придется подумать о навигации по ошибочным полям / шагам, если что-то пойдет не так, и это усложнит вещи.

Что касается повторного использования компонентов, у меня есть мнение: если вы можете поддерживать и заменять компоненты — повторно используйте их.

Редактировать: если вы используете react, вам может не потребоваться перенаправлять пользователя через серверную часть, а только переключать шаг через react (либо с помощью маршрутизатора на стороне клиента, либо с простым значением «step» в состоянии), в зависимости от ваших потребностей.