2017-12-31 31 views
-1

動的プロパティを使用してフォームを構築できませんでした。私は後でフォームを正規化することができますが、別の余分な関数を実行しないようにしようとしますが、私はonChangeメソッド内でそれを行うことができます。setStateを使用してonChangeイベントでオブジェクトの配列を作成します。

//願望出力

formData: { 
    name: 'alice', 
    addresses: [{ 
    address_id: 1, address: 'UK' 
    }, { 
    address_id: 2, address: 'USA' 
    }] 
} 

私はstuckedです。

https://codesandbox.io/s/l528yw35x9

+0

だから何が問題なのですか? –

+0

@AlexanderElgin私は、2ウェイバインディング –

+0

[**この作業コード**](https://codesandbox.io/s/rrjwmlky7o)をチェックして、オブジェクトにもアドレスを保存して、 apiを打つ前のフォーマットは、オブジェクトでデータを管理するのが簡単です。 –

答えて

0

あなたの問題に簡単な解決策は、あなたがこのようなアドレスの要素をマッピングすることができ、あなたののonChange方法では今、この

this.state = { 
    formData: {addresses:[ 
    { 
     address_id: 1, address: 'UK' 
    }, { 
     address_id: 2, address: 'USA' 
    } 
    ]} 
} 

のようなフォームデータのアドレスの配列を初期化することです

else{ 
    //{address_id: inputId, address: value} 
    this.setState({ 
    formData: { 
     ...this.state.formData, addresses: 
     this.state.formData.addresses.map(e=>{ 
     return e.address_id == inputId ? 
      { address_id: inputId,address:value} : e 
     }), 

     } 
    }) 
} 

下記の完全な例をご覧ください。 https://codesandbox.io/s/0omj21nrpv

関連する問題