2017-01-25 49 views
0

我正在使用redux-form構建多頁表單。Redux形式 - 按需驗證 - 嚮導形式

我有一個多「頁」的形式。 我的父窗體是初始化這樣的:

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>例如我初始化像這樣的redux-form:

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