Как настроить многошаговую форму в React?

У меня есть многоступенчатая форма в React, на каждом шаге вы должны вводить информацию.

Шаг 1: ...некоторая информация и выбор языков (вы можете выбрать несколько языков) Шаг 2: ... немного информации Шаг 3: ...некоторая информация о загрузке Шаг 4: Пользователи отвечают на конкретный вопрос, этот вопрос должен отображаться на всех языках, выбранных пользователем.

например: если пользователь выбрал английский и французский языки, тогда пользователь ответит на вопрос на английском языке, затем нажмет «Сохранить/Далее», а затем ответит на вопрос на французском языке.

Шаг 5: подтвердите

По умолчанию страница находится на шаге 1, пользователь может перейти к следующему шагу, нажав кнопку «Сохранить/Далее», а затем шаг состояния увеличивается, и отображается шаг 2, я не могу понять поток для шага 4, это будет похоже на многоступенчатая форма внутри многоступенчатой ​​формы, которая звучит неправильно.

Поэтому, если кто-нибудь знает, как сделать шаг 4 лучше, пожалуйста, помогите мне.

Заранее спасибо.

вы хотите решить эту проблему, используя один маршрут или несколько маршрутов?

Abu Sufian 15.12.2020 11:08

один маршрут подойдет

user12551649 15.12.2020 11:12

Как вы сказали, поскольку вы хотите сделать несколько шагов на шаге 4, вам придется разбить его на подшаги. Вы можете создать новый степпер внутри шага 4, который будет проходить по каждому языку и показывать вопросы на них.

szczocik 15.12.2020 11:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первоначально у вас может быть несколько шагов, как показано ниже

switch(step) {
    case 1:
        return(
            <FirstStep
                handleCaseNumber = {this.handleCaseNumber}
                handleChangeEvent = {this.handleChangeEvent}
                values = {values}
            />
        )
    case 2:
        return(
            <SecondStep
                nextStep = {this.nextStep}
                prevStep = {this.prevStep}
                handleClientVerification = {this.handleClientVerification}
                handleChangeEvent = {this.handleChangeEvent}
                values = {values}
            />                
        )                
    case 3:
        return(              
            <ThirdStep
                nextStep = {this.nextStep}
                prevStep = {this.prevStep}
                handleAccessToken = {this.handleAccessToken}
                handleChangeEvent = {this.handleChangeEvent}
                values = {values}
            />
        )
    case 4:
        return(
            <FourthStep
                nextStep = {this.nextStep}
                handleChangeEvent = {this.handleChangeEvent}
                values = {values}
            />              
        )                                
}

После этого в компоненте FourthStep у вас могут быть такие шаги как дочерние.

switch(step) {
    case 1:
        return(
            <ChildStepOne
                handleCaseNumber = {this.handleCaseNumber}
                handleChangeEvent = {this.handleChangeEvent}
                values = {values}
            />
        )
    case 2:
        return(
            <ChildStepTwo
                nextStep = {this.nextStep}
                prevStep = {this.prevStep}
                handleClientVerification = {this.handleClientVerification}
                handleChangeEvent = {this.handleChangeEvent}
                values = {values}
            />                
        )                               
}

вы можете следовать этой структуре в зависимости от ваших потребностей.

Да, это может работать нормально, но я не уверен, сколько языков выберет пользователь, поэтому внутри компонента четвертого шага я не могу указать ограничение шагов, которое может быть 10 или может быть всего 1.

user12551649 15.12.2020 11:57

Да, тогда сделайте шаги динамическими в зависимости от выбора языка. Чтобы получить данные о выборе языка на всех этапах, используйте contextAPI.

Abu Sufian 15.12.2020 12:03

Другие вопросы по теме