redux-form:如何在normalizer中调度更改

时间:2016-08-30 10:50:15

标签: javascript redux redux-form

使用redux-form 6.0.1

我有一个包含2个字段的表单。一个是选择器,另一个是输入。

      <Field name="toLanguage" component="select" normalize={normalizeLanguage}>
        {languages.map(function(item) {
          return <option key={item.id} value={item.name}>{item.display}</option>;
        })}
      </Field>

      <Field name="toValue" component="input" type="text" placeholder="toLanguageString" />

我想根据select字段的状态更改输入更改的内容。我在这里阅读了如何完成这项工作:https://github.com/erikras/redux-form/issues/442

所以为了试一试,我继续手动调度更改

<button type="button" onClick={() => dispatch(change('TranslationDetail', 'toValue', 'foo')) }>dispatch</button>

这样可行,但这是推荐最少的方法。 当我尝试使用规范化器时,我遇到了一个错误“未捕获的ReferenceError:未定义更改”。我应该如何更改我的规范化器以根据选择器的状态更改字段的值?

const normalizeLanguage = (value, previousValue, dispatch) => {
  if (!value) {
    return value
  }
  console.log(value)
  dispatch(change('TranslationDetail', 'toValue', value))
  return value
}

export default normalizeLanguage

1 个答案:

答案 0 :(得分:1)

您可能缺少对change功能的引用。在导入声明中包含以下行:

import {change} from 'redux-form';