2020-05-18
1497
#react
Kristofer Selbekk
18674
May 18, 2020 ⋅ 5 min read

Creating forms in React in 2020

Kristofer Selbekk Bekker. Bulldog owner. Dad. React enthusiast. 🎩🥂🍔

Recent posts:

react children prop how to properly type

How to type React children correctly in TypeScript

Learn modern best practices for typing React children in TypeScript, including ReactNode, PropsWithChildren, ComponentProps, and why React.FC is no longer recommended.

Ohans Emmanuel
Dec 19, 2025 ⋅ 7 min read
complete guide to internationalization next js

The complete guide to internationalization in Next.js

Learn how to internationalize Next.js apps with Lingui and next-intl, covering App Router, RSC, routing, locale detection, and dynamic language switching.

Ivan Vlatkovic
Dec 19, 2025 ⋅ 13 min read

Vite vs. Webpack for react apps in 2025: A senior engineer’s perspective

Vite vs Webpack in 2025: a senior engineer’s take on performance, developer experience, build control, and when each tool makes sense for React apps.

Peter Aideloje
Dec 19, 2025 ⋅ 3 min read
vitest 4 adoption guide

Vitest 4 adoption guide: Overview and migrating from Jest

Learn how Vitest 4 makes migrating from Jest painless, with codemods, faster tests, native ESM, browser testing, and a better DX.

Onuorah Bonaventure
Dec 18, 2025 ⋅ 15 min read
View all posts

13 Replies to "Creating forms in React in 2020"

  1. Nice post, wish when I read all these forms in react blogs though that they’d include nice ways the include validation

  2. Great article 👍
    There is a small typo in the first example. You entered username.. probably ment email

  3. I think, the approach you used for get data using FormData, it’s antipattern in react. Please see controlled components vs uncontrolled components.

  4. I think what the author is trying to say throughout the article is that in simple cases, the overhead of controlled components doesn’t bring any additional benefits. Just using uncontrolled components alone isn’t an anti pattern.

  5. Hi ,
    I use a custom hook, but the problem is that I also have a large list in the component. When I do the onChange operation, this list becomes re render again and greatly reduces performance.

  6. Your code works fine until a checkbox is added. The formData doesn’t seem to return a true/false value.

    const formData = new FormData(e.target as HTMLFormElement);

    The formData.get(‘registerMe’) returns ‘on’ instead of true/false. I cannot think of any other way except to access the checkbox value directly:

    e.target.elements[‘registerMe’].checked

    So wouldn’t it be better to access the elements directly rather than through the FormData? You already have a reference to the form and can access the values.

Leave a Reply

Would you be interested in joining LogRocket's developer community?

Join LogRocket’s Content Advisory Board. You’ll help inform the type of content we create and get access to exclusive meetups, social accreditation, and swag.

Sign up now