Skip to content

Commit 4953f0b

Browse files
committed
complete react-changing-complex-state-practice
1 parent 35dd3b0 commit 4953f0b

File tree

1 file changed

+32
-6
lines changed
  • react-changing-complex-state-practice/src/components

1 file changed

+32
-6
lines changed

react-changing-complex-state-practice/src/components/App.jsx

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,46 @@ function App() {
44
const [contact, setContact] = useState({
55
fName: "",
66
lName: "",
7-
email: ""
7+
email: "",
88
});
99

10+
function handleChange(event) {
11+
const {name, value} = event.target;
12+
13+
setContact((prevValue) => {
14+
if (name === "fName") {
15+
return {
16+
fName: value,
17+
lName: prevValue.lName,
18+
email: prevValue.email,
19+
};
20+
} else if (name === "lName") {
21+
return {
22+
fName: prevValue.fName,
23+
lName: value,
24+
email: prevValue.email,
25+
};
26+
} else if (name === "email") {
27+
return {
28+
fName: prevValue.fName,
29+
lName: prevValue.lName,
30+
email: value,
31+
};
32+
}
33+
});
34+
}
35+
1036
return (
1137
<div className="container">
1238
<h1>
1339
Hello {contact.fName} {contact.lName}
1440
</h1>
1541
<p>{contact.email}</p>
16-
<form>
17-
<input name="fName" placeholder="First Name" />
18-
<input name="lName" placeholder="Last Name" />
19-
<input name="email" placeholder="Email" />
20-
<button>Submit</button>
42+
<form onChange={handleChange}>
43+
<input name="fName" placeholder="First Name" value={contact.fName} />
44+
<input name="lName" placeholder="Last Name" value={contact.lName} />
45+
<input name="email" placeholder="Email" value={contact.email} />
46+
<button type="submit">Submit</button>
2147
</form>
2248
</div>
2349
);

0 commit comments

Comments
 (0)