2017-10-20 2 views
0

私はリストを持っていますし、それぞれのアイテムを別々に提出するフォームを作成しようとしました。私はこのように、動的にフォームのそれぞれの名前を作成するためにcompose()を使用します。Reduxフォーム、動的な名前の形式は再登録されたフィールドを意味します

return { 
    formName: ownProps.form 
} 

そして私は私の子コンポーネント(リストの項目)、リスト内にこのようなフォーム名を渡す減速から到着:

list.map((item, index) => (
    <RowAuthorizations form={`${formName}[${index}]`} onSubmit={this.submitRowAuthorization} /> 
)) 

私は減速から選択した値なしで私のリストフィールドを更新しようとすると:フィールドの

tenant.users.filter((x) => x.id !== action.payload.id) 

値が削除されているが、レジスト私のコンポーネントが削除された値なしでリストを再レンダリングすると、eredFieldsはを再表示します。

私は、フィールドを追加:私は、フィールドを削除すると

Add the Field :

を:

Remove the field

+0

減速機のフィールドを削除しますか?減速機は何かを突然変異させることは想定されていません! –

+0

選択されたアイテムを削除するリデューサのみのフィルタリスト。その後、そのコンポーネントは更新されたリストを再描画します。 – user3703539

答えて

0

は最後に、私は私の問題を解決しました:

あなたが追加する必要があります追加したオブジェクトと追加するdestroyOnUnmount:true(デフォルトはtあなたがそれを偽に変更した場合はrue)。 既にフィールドが登録されているため、登録されたフィールドが各フィールドをオーバーライドしているため、フィールドが登録されていません。

リストを作成して各行を独立して送信する場合は、mapStateToProps(コンテナから渡された動的名)を使用して動的名をフォームに追加し、この:

return { 
    formName: ownProps.form 
} 

このformNameフォーム渡す必要がそれぞれの子(フォームの行)に小道具を持っています

{ list.map((item, index) => { 
     return <RowAuthorizations form={`${formName}[${index}].${name}`} onSubmit={this.submitRowAuthorization} /> 
    }) 
} 

名は、値registeredFieldが含まれているサブオブジェクトである...あなたが持っていますuser [0] .user.valueあなたがformReducer.pluginを({})を使用して、この手順に従ってください。この場合のために、あなたの減速からのフォームを管理したい場合はそのユーザー[0]とは異なり、S

を.values。

私が正しい場合は教えてください。

関連する問題