2016-10-17 2 views
0

Redux-Formでは、onSubmitをフォームコンポーネントの小道具として渡してから、フォームコンポーネントのフォームタグにonSubmit={handleSubmit}プロパティがあるようです。これは、Redux-Formがすべてのフォームデータを集めて、単一のオブジェクトパラメータとしてonSubmit関数に渡すときに意味をなさないでしょう。しかし、同じ親コンポーネントの複数のフォームコンポーネントの子を持つとどうなりますか?提出された情報とは異なることをしなければならない場合でも、両方のフォームの子供に1つのonSubmit関数を渡すことができます。あなたは別のonSubmitを渡すことができるように、複数のフォームの複数の親を持つ唯一のソリューションですか?私にとってこれはあまり乾燥していないようです。Reduxフォームの同じ親の複数のフォーム子コンポーネントの複数の#onSubmitsをどのように管理しますか?

答えて

0

ここでreactjsの概念はcompositionです。あなたがする必要がどのような

がある: -

は、一般的な形をしてください、CommonForm.jsそれを呼び出すことができます。このフォームはあなたのreduxフォームに添付されます。だからあなたのすべてのフォーム共通機能(フォームを開く、フォームを閉じるかもしれない)はここで実装されるでしょう。

P.S:ここにフィールドコンポーネントは存在しません。

ここで、レンダリングする5つの異なるフォームがあるとします。最初のフォームの例を考えてみましょう。 FirstForm.jsという名前のファイルを作成します。

ここでFirstForm.jsでフィールドをレンダリングし、レンダリングしたフィールドを小道具としてCommonFormに渡します(ここでは構図を使用しています)。

チェック次のコード: -

フォーム1

 class Form1 extends Component { 
     render(){ 
     const renderedFields = this.renderFormFields() 
     return(
      <CommonForm {...this.props} renderedFields = {renderedFields } /> 
     ) 
     } 
    } 

CommonForm

class CommonForm extends Component { 

    componentDidMount(){ 
    const { data,initialize} = this.props 
    if(data){ 
     initialize(data) 
    } 
    } 

    render(){ 
    const { renderedFormFieldss } = this.props 
    return(
     <div className='form-container'> 
     <form onSubmit={this.instrumentSplitCreateOrUpdate()}> 
      {renderedFormFields} 
     </form> 
     </div> 
    ) 
    } 
} 

CommonForm = reduxForm({fields: ["text"], validate : validateInputField})(CommonForm) 

export default CommonForm 

あなたはReduxのフォームに接続するために同じ基本コンポーネントを使用しているこの方法です。

動的なフォーム: -

理想的には上記のクエリを解決するが、より興味深いものがあるはずです。あなたは一般的な形式の最後の行に適切なコードを経由した場合は、私は、パラメータとして以下渡しています見ることができます: -

{fields: ["text"]} 

だから、あなたが使用したのと同じ形態を有するnames.Sayこれであなたは、変数を持つフォームを作成することができます複数のコンポーネントで同じフォームをレンダリングしたいが、名前は異なる。このためには、次のよう試すことができます: -

<CommonForm {...this.props} renderedFields = {renderedFields } /> 

からCommonFormを呼び出している間Form1が小道具を使用すると、フォームを作成すると、変数名とformと呼ば渡すと言います。次のようなことができます: -

<CommonForm form='//some key' {...this.props} renderedFields = {renderedFields } /> 
関連する問題