【问题标题】:How to reset setValues in react-hook-form version 7?如何在 react-hook-form 版本 7 中重置 setValues?
【发布时间】:2021-09-26 14:35:06
【问题描述】:

我已经从 api 中形成了一些预填充的值,我将它们设置为 setValues('input-field-name','value-got-from-api') 当我使用 react-hook-form 的重置方法时,它会重置新添加的数据,但不会重置字段中的整个数据。例如。如果先前带有 setValue 的输入字段值是 123 并且如果我键入 123abc 它会重置 abc 部分并将字段设置为 12345。但我想重置为 null 或空白表单。

直接的问题是,如何通过使用普通 js 或使用 react-hook-form 重置表单字段?

PS:我尝试了 rect-hook-form 中的 reset() 方法和普通 js 重置 document.getElementById('myform').reset(); 但注意到有效。

【问题讨论】:

  • 我刚刚重读了你的问题。你能重现here中的问题吗?
  • 好吧,让我来做吧

标签: javascript reactjs forms react-hook-form


【解决方案1】:

您可以使用从useForm 钩子返回的reset 方法。

export default function App() {
  const { register, handleSubmit, reset } = useForm();
  const onSubmit = (data, e) => {};

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <input {...register("firstName", { required: true })} />
      <input {...register("lastName")} />
      <input type="button" onClick={() => {
        reset({
          firstName: "default value",
        }, {
          keepErrors: true, 
          keepDirty: true,
          keepIsSubmitted: false,
          keepTouched: false,
          keepIsValid: false,
          keepSubmitCount: false,
        });
      }} />
    </form>
  );
}

【讨论】:

  • 上述重置方法仅适用于新输入的文本,它不会重置以前填充的值
  • @owlz 之前的值是如何填充的?你在使用defaultValues 还是其他?你能告诉我你的表单代码吗?
  • 对我来说 defaultValues 不起作用,所以我使用了 react-hook-form 中的 setValues
  • @owlz reset 应该始终有效,无论您之前如何设置输入组件。看一下我之前给你的CodesandBox,输入提供defaultValue,更新为setValue,之后可以重置成功。
  • 好的,让我再试一次。
猜你喜欢
  • 1970-01-01
  • 2021-12-16
  • 2021-03-29
  • 2021-08-18
  • 2021-11-01
  • 1970-01-01
  • 2020-12-26
  • 1970-01-01
  • 2022-12-21
相关资源
最近更新 更多