2017-01-25 17 views
0

Я использую редукционную форму для создания многостраничной формы.Redux-form - проверка по требованию - форма мастера

У меня есть многостраничная страница. Моя материнская форма инициализации, как это:

Parents = reduxForm({ 
    form: 'my-form', 
    enableReinitialize: true, 
    destroyOnUnmount: false, 
})(Parents); 

И множественный компонент/страница отображается conditionaly так:

{(step === 1) && <Intro onSubmit={this.handleSubmit} loading={submitting}/>} 
{(step === 2) && <Motifs onSubmit={this.handleSubmit} onSubmitFail={this.handleSubmitFail} loading={submitting}/>} 
{(step === 3) && <Fichiers onSubmit={this.handleSubmit} onSubmitFail={this.handleSubmitFail} loading={submitting}/>} 
{(step === 4) && <Confirmation onSubmit={this.handleSubmit} onSubmitFail={this.handleSubmitFail} loading={submitting}/>} 
{(step === 5) && <Terminee onSubmit={this.handleSubmit} onSubmitFail={this.handleSubmitFail} loading={submitting}/>} 

this.handleSubmit является функцией, которая называют this.props.handleSubmit() и добавить или удалить 1 к шагу, если сервер ответьте http 200.

О компонентах <Motifs> например, i инициализируется редукционная форма:

Motifs = reduxForm({ 
    form: 'my-form', 
    destroyOnUnmount: false, 
    validate: validateMotifs // validation function 
})(Motifs); 

И для каждого из моих форм компонентов/страниц у меня есть некоторые кнопки к предыдущему/следующему, как это: <NavFormButton loading={loading} handleSubmit={handleSubmit} onSubmit={onSubmit}/>

Когда я нажмите кнопку Далее я хочу, чтобы проверить и отправить форму. Работает. Но когда я иду раньше, я просто хочу отправить данные, чтобы они были сохранены, но не хотят проверять, потому что пользователь может не заполнить все поля.

Как мне это сделать? Я следую хорошему пути?

Имея много проблем, чтобы понять, как это сделать правильно ... Спасибо.

ответ

0

Сначала вы можете попробовать повторно инициализировать форму с текущими значениями, отправить, а затем перейти к предыдущей форме.

dispatch(initialize('my-form', newInitialValues))

Подробнее here

Кроме того, если вы используете v6, то вы должны искать shouldAsyncValidate функцию для запуска проверки асинхронной, когда вам это нужно. Официальные лица docs