从Redux表单获取字段值会返回“未定义”

时间:2019-10-02 17:25:45

标签: javascript reactjs redux redux-form

我所拥有的一切使我更加着迷于代码,并将其与mapStateToPropsRedux form的指南进行了比较。我试图获取一个字段值,但是我不断收到 undefined 。 我所拥有的是:

const myForm = reduxForm({
  form: 'myForm',
})(MyComponentClass);

const mapStateToProps = ((state) => ({
  l10n: l10nService,
  formValues: getFormValues('myForm')(state),
}));

export default connect(mapStateToProps)(myForm);

当我尝试输出

之类的formValue时
console.log(formValues);

我一直在不确定。当我重新阅读文档时,这很令人沮丧,并且找不到问题所在。我正在用这样的方法可视化该字段:

addSelectFieldD(element, key) {
  return (<Field
    key={key}
    name={element.name}
    label={l10nService.translate(element.label)}
    component={SelectField}
    units={element.units}
    options={this.props.selectOptions}
    onChangeDuration={this.onChangeDuration}
    onRetrieveSelectOptionsError={this.onRetrieveSelectOptionsError}
    informationMessage={l10nService.translate(element.tooltip)}
    submitted={this.state.formSubmitted}
  />);
}

有趣的是,我能够在其他组件中获取formValues。我非常感谢任何帮助人员,因为我对此非常满意。

编辑:我创建了一个示例here

1 个答案:

答案 0 :(得分:1)

好的,所以我已经解决了这个问题,在redux格式中,如果您不向表单字段提供一些初始值,它将是未定义的,而不是空对象。

为了给您一个主意,我已使用字段的初始值更新了沙箱 所以现在在this.props.formValues上,您将获得该字段的默认值, 显然,onChange不能处理,因此即使您从下拉菜单中更改了值,也可以保持不变,但是可以理解,

Here,您可以查看其完成情况,基本上我已经为

提供了表单的初始值
const myForm = reduxForm({
form: "myForm",
initialValues: {
 my: "value1",
 },
})(MyForm);

更新:由于您将react-select用作选择组件,因此当您将下拉列表值更改为

时,您需要分派更改操作
onChangeSelect = (props, newOption) => {
  this.props.dispatchChange(formName, fieldName, value)
} 

我已更新沙箱,以获取您的案例的完整工作示例 希望现在能对您有所帮助