Search code examples
reactjsformsreact-hooksreact-hook-formreact-forms

How to reset the whole form after submitting in React-hook-form


What should I do after Submitting the form to reset/clear the field value?

import React from "react";
import { useForm } from "react-hook-form";

export default function App() {
  const { register, handleSubmit } = useForm();
  const onSubmit = data => console.log(data);
   
  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <input {...register("firstName", { required: true, maxLength: 20 })} />
      <input {...register("lastName", { pattern: /^[A-Za-z]+$/i })} />
      <input type="number" {...register("age", { min: 18, max: 99 })} />
      <input type="submit" />
    </form>
  );
}`

Solution

  • You can get a reset function from useForm hook, and call it on your onSubmit function, like this:

        import React from "react";
        import { useForm } from "react-hook-form";
        
        export default function App() {
          const { register, handleSubmit, reset } = useForm();
          const onSubmit = data => {
               console.log(data)
               reset()
          }
           
          return (
            <form onSubmit={handleSubmit(onSubmit)}>
              <input {...register("firstName", { required: true, maxLength: 20 })} />
              <input {...register("lastName", { pattern: /^[A-Za-z]+$/i })} />
              <input type="number" {...register("age", { min: 18, max: 99 })} />
              <input type="submit" />
            </form>
          );
        }`
    

    On reset documentation, you can check some good practices for reseting a form, like providing some default values to the inputs, for example.