2016-10-05 5 views
2

나는 redux-form을 사용하고 있습니다. 나는 그저 onSubmit 기능을 사용하지 않습니다.redux-form - onSubmit doesnt work

편집 : 제 문제는 함수가 호출되지 않는 것입니다. 디버거를 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

제출하지 않으려면 onSubmit을 사용해야합니다.

export default class Form extends Component { 
    static propTypes = { 
    ... 
    } 

    submit(data) { 
    console.log(data); 
    } 

    render() { 
    return (
     <form action="" method="post" onSubmit={this.props.handleSubmit(this.submit)}> 
     ... 
     </form> 
    ); 
    } 
}