Sometimes, we want to edit the value of multiple controlled input components in React.
In this article, we’ll look at how to edit the value of multiple controlled input components in React.
Edit Multiple Controlled Input Components’ Values in React
To edit the value of multiple controlled input components in React, we can create a function that returns the onChange callback for each input.
For instance, we can write:
import React, { useState } from "react";
export default function App() {
const [contact, setContact] = useState({ firstName: "", lastName: "" });
const handleChange = (propertyName) => (event) =>
setContact((c) => ({ ...c, [propertyName]: event.target.value }));
return (
<div>
<input
type="text"
onChange={handleChange("firstName")}
value={contact.firstName}
/>
<input
type="text"
onChange={handleChange("lastName")}
value={contact.lastName}
/>
</div>
);
}
We have the contact state which is set to an object with the firstName and lastName properties as its initial value.
Then we create the handleChange function that takes propertyName and calls setContact to update the contact state’s propertyName property with the inputted value, which is stored in e.target.value .
Then we have 2 inputs with the value props set to each contact property.
And the onChange props are set to functions returned by handleChange with the propertyName to set the contact ‘s firstName or lastName property depending on the field.
Conclusion
To edit the value of multiple controlled input components in React, we can create a function that returns the onChange callback for each input.