2017-01-11 5 views
0

У меня возникла ошибка с обработчиком onSubmit в Redux-Form при вызове от создателя действия, предоставленного формой redux. Если я использую регулярную кнопку внутри, она работает так, как должна.Ошибки с обработчиком onSubmit, если submit вызывается через this.props.submit ('formname')

import { Field, reduxForm } from 'redux-form'; 

class Property extends Component { 
    constructor(props) { 
     super(props); 

     this.saveOnChange = this.saveOnChange.bind(this); 
     this.handleSubmit = this.handleSubmit.bind(this); 
    } 

    handleSubmit() { 
     console.log('form submitting'); 
    } 

    saveOnChange() { 
     console.log('should auto save'); 
     this.props.dispatch(this.props.submit('propertySettings')); 
    } 

    render() { 
     const { handleSubmit } = this.props; 

     return(
      <form onSubmit={handleSubmit(this.handleSubmit)}> 
       // Stuff goes here 

       <div onClick={this.saveOnChange}>(just for example it is with a div)</div> // <-- Get's errors 
       <button type='submit'>Via button</button> // <-- Work's fine 
      </form> 
     ); 
    } 
} 

Received иных ошибок при вызове через создателя действий

enter image description here

+0

Что касается изменения строки на

therewillbecode

+0

@therewillbecode см. Обновленный ответ, эта ошибка существует только при вызове submit с создателем действия, предоставленным сокращением формы – NealVDV

ответ

1

Похоже, вы пытаетесь связать локальный метод handleSubmit в рамках компонента, а затем передать его в качестве аргумент метода handleSubmit на реквизитах.

Если вы просто пытаетесь присвоить метод handleSubmit к onSubmit вашей формы, вы можете попробовать это:

import { Field, reduxForm } from 'redux-form'; 

class Property extends Component { 
    constructor(props){ 
    super(props); 
    this.handleSubmit = this.handleSubmit.bind(this); 
    // bind handleSubmit in the constructor, it's more efficient 
    // as it only occurs once per lifetime of a component 
    } 
    handleSubmit() { 
    console.log('form submitting'); 
    } 
    render() { 
    return(
     <form onSubmit= { this.handleSubmit}> // call it here like this 
     // Stuff goes here 
     </form> 
    ); 
    } 
}
+0

Использование этого I все равно получают те же ошибки:/ – NealVDV

+0

Я обнаружил, что только когда вы используете создателя действия для вызова submit. См. Обновленный вопрос – NealVDV

+0

Вы по-прежнему назначаете дескриптор по-другому, как я предложил. – Pineda

0

Обновление с версии перевождь-формы 6.3.x до 6.4.x решить эту проблему. См. release notes.