表单的空白字段,`initialValues`没有考虑在内

时间:2017-03-03 11:22:36

标签: reactjs redux redux-form react-bootstrap

我正在使用最新的redux-form(v6)。我试图用状态值初始化表单,所以我这样做,根据文档:

myForm = reduxForm({
    form: 'xxx'
})(myForm);

myForm = connect(state => ({
    initialValues: {
      ...state.taskForm.taskData.parameters
    }
  })
)(myForm);

然后,我在Field的{​​{1}}方法中小心地添加了render()个组件,我使用了我的自定义myForm无状态组件:

InputField

(我正在使用export const InputField = ({propName, label}) => ( <Field name={propName} component={ (prop) => <FormGroup> <Col xs={4} componentClass={ControlLabel}>{label}</Col> <Col xs={8}> <FormControl {...prop} /> </Col> </FormGroup> } /> ); 用于UI)

当然,我从react-bootstrap三次检查name的{​​{1}}是正确的{。}}。

但是,表单显示的是空白字段而不是初始值。

我可以通过调试器看到INITIALIZE操作Field包含具有正确初始值的字段。

我认为问题如下: INITIALIZE 操作在 REGISTER_FIELD 之前发送。或者至少,一旦 REGISTER_FIELD 被调度,虽然正确设置了字段名称,但它并没有取初始值...但我不知道如何解决问题。和 也许是因为别的......

当我绝望时,我尝试initialValues,但它并没有改变任何事情。

编辑:看来实际上我正面临这个问题#1750,解决方案似乎是#2210

1 个答案:

答案 0 :(得分:2)

Field将分为inputmeta个对象的属性传递给其组件,您应该只将input属性传递给FormControl组件。所以使用这个:

<FormControl {...prop.input} />

而不是:

<FormControl {...prop} />

请查看redux-form docs了解详情。