繁体   English   中英

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

[英]Getting a field value from Redux form returns 'undefined'

我所拥有的让我在代码中大吃一惊,将其与mapStateToPropsRedux form的指南进行比较。 我正在尝试获取字段值,但我不断收到undefined 我所拥有的是:

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

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

export default connect(mapStateToProps)(myForm);

当我尝试 output formValues 之类的

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。 我非常感谢任何帮助的人,因为我对此非常满意。

编辑:我在这里创建了一个示例

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

为了给你一个想法,我已经用该字段的初始值更新了沙箱,所以现在在 this.props.formValues 上,你将获得该字段的默认值,显然 onChange 没有被处理,所以即使你更改它也保持不变下拉列表中的值,你可以改变它,但你明白了,

在这里你可以看看它是如何完成的,基本上我已经为表单提供了初始值

const myForm = reduxForm({
form: "myForm",
initialValues: {
 my: "value1",
 },
})(MyForm);

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

onChangeSelect = (props, newOption) => {
  this.props.dispatchChange(formName, fieldName, value)
} 

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM