2017-02-09 21 views
2

この例では、ユーザー情報を更新するフォームがあり、それはredux-form 6.5で書かれています。私はこのスタックの初心者です。redux-form - 編集フィールドのみを送信

レンダリングフォーム機能は次のようである:

render() { 
    const { handleSubmit } = this.props;   
    return (
     <form onSubmit={handleSubmit(this.handleFormSubmit.bind(this))}> 
     <Field name="name" component="input" type="text"/> 
     <Field name="surname" component="input" type="text"/> 
     <button action="submit">Sign in</button> 
     </form> 
    ); 

私はreduxForm接続があります。

const extendedComponent = reduxForm({ 
    form: 'userdetail', 
    validate 
})(UserDetail); 

を私はハンドラ提出持っている:

handleFormSubmit(user) { 
    // TODO: how can I get only the touched fields? 
    this.props.updateUser(user); 
    } 

を私が正しく、オブジェクトのユーザーを受け取ります検証後、私はPUT呼び出しを送信し、すべて正常に動作します。

しかし、私はPUT内のすべてのデータを送信したくない、私の願いは、PUTに編集されたデータのみを送信することです。 initialValuesを取得してすべてのフィールドを比較できることを理解します。

別の方法がありますか?タッチしたフィールドだけを取得するにはどうすればよいですか?

これを行うのがベストプラクティスですか?

これは私にとって共通の課題であり、私はそれについて何も見つけていないので、私は完全にその点を見逃していると仮定しています。

はあなたのすべてをありがとう:)

答えて

3

redux-formプロジェクトのメンテナによると:"That's not a feature of the library"

その回答で、彼は自分自身を扱うか、またはobject-diffのような既存のライブラリを使用することをお勧めします。このような例

import diff from 'object-diff' 

handleFormSubmit(user, dispatch, props) { 
    const { initialValues } = props 
    const changedValues = diff(initialValues, user) 
    this.props.updateUser(changedValues); 
} 
+0

、私はその質問を逃し、ありがとうございます。 – Lattanzio

関連する問題