2016-08-26 3 views
2

Я пытаюсь сделать это:Update Redux поля формы от обратного вызова

"redux-form": "6.0.0-rc.5", 
"react": "^15.3.1", 
"react-dom": "^15.3.1", 




addressUpdated(newAddress) { 
    //TODO, tell Redux form that a value is now available! 
    this.props.fields.address.onChange(newAddress.label); 
} 

адрес скрытое поле, которое должно получить значение сразу addressUpdated называется. я получаю сообщение об ошибке

Uncaught TypeError: Cannot read property 'onChange' of undefined 

Компонент создавался:

<Field id="address" name="address" type="hidden" component={fieldFactory} /> 



const fieldFactory = ({id, input, label, type, meta: { touched, error } }) => { 
    if(type.match(/hidden/)){ 
     return(
      <div> 
       <input id={id} {...input} type={type} /> 
       {touched && error && <span>{error}</span>} 
     </div> 
    ); 
    } 
} 

`` `

Любые идеи?

ответ

0

Если я правильно понял, вы больше не можете использовать поля в реквизитах с v6.

Рассмотрим рядного form.js:

Row.propTypes = { 
    change: PropTypes.func.isRequired, // this binds redux-form change action creator 
    dispatch: PropTypes.func.isRequired 
} 

тогда ваша функция будет выглядеть следующим образом:

addressUpdated(newAddress) { 
    this.props.dispatch(this.props.change('address', newAddress.label); 
} 

Учтите, что в v6 rc5 это не работает из-за bug, но это была зафиксирована в 6.0.1.

Для того, чтобы получить, чтобы работать в rc5 вы должны импортировать глобальные изменения действия создателя и послать его с именем вида: ссылка

import { change } from 'redux-form'; 

Row.propTypes = { 
    form: PropTypes.string.isRequired, 
    dispatch: PropTypes.func.isRequired 
} 

addressUpdated(newAddress) { 
    this.props.dispatch(change(this.props.form, 'address', newAddress.label); 
} 

API: http://redux-form.com/6.0.1/docs/api/Props.md/

+0

Спасибо, это прекрасно! – szokrika

Смежные вопросы