Formik重置表格,不是初始状态,而是新状态

时间:2020-02-17 21:56:36

标签: reactjs formik

因此,我正在将formik用于更新/编辑表单,并将初始初始值作为当前文本。当我提交并调用resetForm时,新文本将替换为过去的文本。

    <Formik
      initialValues={{ text: existingPost.text }}
      onSubmit={(values, actions) => {
        exampleSubmitHanlder(values);
        actions.resetForm();
      }}>

我有类似的东西,并且也尝试过actions.resetForm({text: ''}),但是效果不佳

2 个答案:

答案 0 :(得分:0)

resetForm会将您的表单值重置为传递到Formik组件的初始值。如果您的初始值不为空,则为了清除提交时的值,可以使用action.setValues({ text: '' })

答案 1 :(得分:0)

我也需要这个。 resetForm 选项将不起作用,因为这将始终使用原始 initialValues

Formik 提供了一个 enableReinitialize 道具:

<块引用>

启用重新初始化?:布尔值

默认值为 false。控制 Formik 是否应重置表单,如果 初始值更改(使用深度相等)。

如果提交后 initialValues 更新为当前状态,则此选项应该对您有用。

示例:

 <Formik
  enableReinitialize
  initialValues={{ text: existingPost.text }}
  onSubmit={(values, actions) => {
    // updates existingPost prop
    exampleSubmitHanlder(values);
}}>