How To Reset a Form After Submit in React JS

Udemezue John - Oct 6 - - Dev Community

Introduction.

When working with forms in React, one of the essential tasks I often encounter is resetting the form after a submission.

Users appreciate a smooth experience where they can quickly fill out another form without the hassle of clearing previous entries.

React, being a popular library for building user interfaces, provides various methods for managing form states.

However, the way I handle form resets can significantly impact user experience and application performance.

Statistics show that nearly 70% of users abandon a form if it feels too complex or cluttered.

This highlights the importance of a well-structured form management approach.

In this blog post, I'll explore effective techniques for resetting forms after submission in React.

Understanding Form Management in React.

React manages form inputs through the state. When a user types into an input field, the state is updated, which can then be used to display or manipulate the form data.

React doesn’t automatically reset forms after submission, so developers have to implement this functionality manually.

How Do I Reset a Form After Submit in React JS?

Forms are a fundamental part of web applications, allowing users to input data. In React, managing form state can sometimes be a bit tricky, especially when it comes to resetting forms after submission.

Whether it's a simple contact form or a more complex multi-step form, knowing how to reset it properly can enhance user experience.

Here’s a comprehensive guide on how to reset a form after submission in React JS.

1.Create the Form Component.

First, I define the form component using React functional components and hooks. I typically use the useState hook to manage the form input values.



import React, { useState } from 'react';

const MyForm = () => {
  const [formData, setFormData] = useState({
    name: '',
    email: '',
  });

  const handleChange = (event) => {
    const { name, value } = event.target;
    setFormData({
      ...formData,
      [name]: value,
    });
  };



Enter fullscreen mode Exit fullscreen mode

In this example, I’m maintaining a state object called formData, which holds the values for name and email. The handleChange function updates the state as the user types.

2. Handle Form Submission.

Next, I need to implement the form submission handler. This is where I process the data and reset the form.



  const handleSubmit = (event) => {
    event.preventDefault();
    console.log('Form submitted:', formData);

    // Reset the form
    setFormData({
      name: '',
      email: '',
    });
  };



Enter fullscreen mode Exit fullscreen mode

In the handleSubmit function, I prevent the default form submission behavior with event.preventDefault(), log the submitted data, and then reset the form fields by setting formData back to its initial state.

3. Create the Form Structure.

Now, I’ll create the JSX structure for the form. This includes input fields for the name and email, and a submit button.



  return (
    <form onSubmit={handleSubmit}>
      <div>
        <label>
          Name:
          <input
            type="text"
            name="name"
            value={formData.name}
            onChange={handleChange}
            required
          />
        </label>
      </div>
      <div>
        <label>
          Email:
          <input
            type="email"
            name="email"
            value={formData.email}
            onChange={handleChange}
            required
          />
        </label>
      </div>
      <button type="submit">Submit</button>
    </form>
  );
};

export default MyForm;



Enter fullscreen mode Exit fullscreen mode

In this JSX, I set the value of each input to the corresponding property in formData and bind the onChange event to the handleChange function. This ensures that as the user types, the state updates accordingly.

Alternative Method: Using ref.

Sometimes, I might prefer to use the ref API to manage form inputs instead of the useState hook.

This method can be useful for forms with many inputs or when performance is a concern. Here’s how to reset a form using ref:



import React, { useRef } from 'react';

const MyFormRef = () => {
  const nameRef = useRef();
  const emailRef = useRef();

  const handleSubmit = (event) => {
    event.preventDefault();
    console.log('Form submitted:', {
      name: nameRef.current.value,
      email: emailRef.current.value,
    });

    // Reset the form fields
    nameRef.current.value = '';
    emailRef.current.value = '';
  };

  return (
    <form onSubmit={handleSubmit}>
      <div>
        <label>
          Name:
          <input type="text" ref={nameRef} required />
        </label>
      </div>
      <div>
        <label>
          Email:
          <input type="email" ref={emailRef} required />
        </label>
      </div>
      <button type="submit">Submit</button>
    </form>
  );
};

export default MyFormRef;



Enter fullscreen mode Exit fullscreen mode

In this example, I use the useRef hook to create references for the input fields. After submitting the form, I reset the input values by directly accessing the current property of each reference.

Best Practices

  • Validation: Always validate the form data before submission to ensure the user has entered valid information.
  • User Feedback: Provide feedback to users after submission. This can include a success message or redirecting them to another page.
  • Accessibility: Ensure that the form is accessible by using proper labels and keyboard navigation.

Conclusion.

Resetting a form after submission in React can be achieved through various methods, each with its advantages.

By implementing a clear reset strategy, you not only improve user experience but also maintain a clean state within your application.

For more detailed information on handling forms in React, you can refer to the official React documentation on Forms and React Hooks.

. . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player