2016-10-05 6 views
2

私はredux-formを使用しています。私はちょうどonSubmit機能を働かせることはできません。redux-form - onSubmit doesnt work

EDIT:私の問題は、関数が呼び出されていないということです。私はonSubmitにデバッガを置き、そこにはありません。 は、ここに私のフォームです:

class userForm extends Component { 
    onSubmit(values) { // do here something } 
    render() { 
     const { handleSubmit } = this.props; 
     return <form onSubmit={handleSubmit(this.onSubmit)}> 
      <Field name='id' 
       component={TextField} 
       label='id'/> 
      <Field name='name' 
       component={TextField} 
       label='name' /> 
      <button type='submit'>Submit</button> 
     </form> 
    } 
} 

export default reduxForm({ 
    form: 'userForm' 
})(userForm); 

しかし、それは決してをonSubmitメソッドになりません。

私は間違っていますか?

+0

reduxFormに 'fields'プロパティを追加する必要がある場合があります。ここをクリックしてください:https://codepen.io/PiotrBerebecki/pen/PGEGQQ –

+0

私の問題は、関数が呼び出されていないことです、私は私の質問を編集しました。 – Pachu

+0

どのバージョンの反応フォームを使用していますか?私は6.0.0を使用しましたが、フィールドプロパティを追加するとコードは正常です:https://codepen.io/PiotrBerebecki/pen/gwoLwBコンソールを参照してください。関数が呼び出されています。 –

答えて

0

これは私が使用するパターンの編集版です。

キーワードbindの使用に注意してください。

一般的に私はreduxを使用して状態を管理していますが、関数handleFormSubmit内のアクションも使用します。しかし、これは正しい軌道に乗るはずです。

import React, { Component } from 'react'; 
import { reduxForm } from 'redux-form'; 

class Userform extends Component { 

    static handleFormSubmit({ id, name}) { 
    console.log({id, name}); 
    } 

    render() { 
    const { handleSubmit, fields: { id, name }} = this.props; 
    return(
     <form onSubmit={handleSubmit(Userform.handleFormSubmit.bind(this))}> 
     <fieldset> 
      <label>Id:</label> 
      <input {...id}/> 
     </fieldset> 
     <fieldset> 
      <label>Name:</label> 
      <input {...name} /> 
     </fieldset> 
     <button action="submit">Submit</button> 
     </form> 
    ); 
    } 
} 


export default reduxForm({ 
    form: 'userform', 
    fields: ['id', 'name'] 
})(Userform); 
0

送信しないで送信する必要があります。送信してください。

​​
関連する問題