Talentedunicorn Using React useState with form inputs
Published onAs of React 16.8, ReactJs added hooks. State hooks is a way to have functional components and state at the same time (prior to this you had to have a class declaration if you needed internal state management in your component).
I won’t go into details about hooks but if you are keen, i recommend reading this article by Tyler McGinnis which covers the topic very well.
What I’d like to point out is something I came across recently when implementing state on a form input using the useState hook. I’ll skip some markup but here is a sandbox implementation of this use case you can play around with ;)
I start by declaring the state using useState hook:
import React, { useState } from 'react';
...
const [ username, setUsername ] = useState();
Then the markup looks like this:
<input
name="username"
value={username}
onChange={(e) => setUsername(e.target.value)}
/>
input’s value is initialized with a value of
undefinedif the hook is defined without a value
In a nutshell, the value of the username input should be updated to whatever the input target value is by setUsername function. When you try to edit the input you will get a warning like this:

The reason this happens is because the input’s value is initialized with a value of undefined if the hook is defined without a value i.e. const [var, setVar] = useState(). This can be easily resolved by initializing the username to an empty string instead like so:
const [username, setUsername] = useState("");
After that change the warning will disappear and your input will work as expected. Hope this helps anyone facing issues implementing useState with controlled form inputs.