2017-02-09 5 views
2

Учитывая пользовательский компонент:отправки пользовательских действий на Redux-форме при OnChange выберите

export const RenderDropDown = (props) => { 
    const {values, input, label, type, meta: {touched, error, active}} = props; 

    var options = function (value, index) { 
     return <Option key={index} 
         value={value} /> 
    }; 

    return(
     <div> 
     <select {...input}> 
      <option value="">--- Select a nationality ---</option> 
      {values.map(options)} 
     </select> 
     </div> 
    ) 
} 

завернутые в компоненте поля Redux-формы

<Field name="nationality" component={RenderDropDown} values={props.nationalities}/> 

Я хочу, что когда select пожары "OnChange" событие, пользовательское действие отправляется помимо действия Redux-формы (AKA @@ redux-form/change)

Как я могу это достичь?

Я попытался передать реквизитом функцию вызова и установить обработчик onChange на теге <select>, но это переопределяет форму редукции onChange.

Любая помощь оценена!

ответ

4

Для того, чтобы обновить значение редукционной формы, вам необходимо позвонить в редукционную форму onChange вручную по собственному желанию onChange. Нравится так:

const { onChange, ... } = props; 
... 
<select onChange={(e) => { 
    const val = e.target.value 
    // whatever stuff you want to do 
    onChange(val) 
}} /> 
+1

Эй, спасибо за ваш ответ. Я нашел ответ. похоже, что он был реализован уже, но я пропустил его каким-то образом: https://github.com/erikras/redux-form/releases Обратные вызовы событий! - Теперь вы можете перейти в режим «Изменить», «OnBlur», «OnFocus» и т. Д. Реквизиты в поле ... –

+0

Спасибо @VicensFayos. Я использовал redux-form 5.x.x, но теперь обновлен до 6.5.x. Итак, если вы передаете значение «Изменить» непосредственно на , автоматически ли оно будет называться редукционной формой onChange после вашего? (то есть для обновления значения поля в хранилище редукционной формы) – inostia