React-Final-Form 隐藏字段值

问题描述

我正在从 Redux-forms 过渡到 react-final-forms,但我无法弄清楚如何处理隐藏的表单值。在 redux-forms 我可以做类似的事情 this.props.change("createdBy",this.props.user.profile.username) 设置隐藏值,但该选项似乎不是 react-final-forms 中的选项(或者我错过了它)。

我认为我可以使用适用于新表单的 initialValues,但是如果我需要在初始表单中添加其他值,我会遇到麻烦。例如,

<Form
  onSubmit={ this.onSubmit }
  initialValues={
    item
      ? item
      : { createdBy: "Rachel",createdOn: new Date(),active: true }
  }
  render={({ handleSubmit,form,submitting,pristine,values }) => (
    <form onSubmit={handleSubmit}>
...

项目可能看起来像:

{
   code: "WTTC",description: "Welcome to the Club",active: true,createdBy: "Rachel",createdOn:"02/23/2021",modifiedBy: null,modifiedOn: null,}

因此,如果我使用上述项目设置表单的 initialValue,我还想设置用于处理 this.props.change("createdBy",this.props.user.profile.username) 的 modifiedBy 和 modifiedOn 值。

有什么建议吗?

解决方法

我根本不熟悉这个库,但从 JS 的角度来看,您可以通过操作 item 对象的初始值来实现它

initialValues={
          item
            ? {...item,createdBy: this.props.user.profile.username,createdOn: new Date()}
            : { createdBy: "Rachel",createdOn: new Date(),active: true }
        }
,
              <Field name="fieldName">
                {({input}) => (
                  <div>
                    <div className="field-wrapper">
                      <input {...input} type="hidden" name="fieldName" value="1"/>
                    </div>
                  </div>
                )}
              </Field>

props.form.getFieldState('fieldName').change(value);

form 是来自

的最终形式的实例
 <Form
        onSubmit={onSubmit}
        subscription={{ submitting: true }}
        validate={validate}
        initialValues={initValues}
        render={({ handleSubmit,form,submitting,pristine,values }) => (