I am trying to learn hooks but have a problem with an object. Looks like useState doesn’t treat my object as an object and I can’t get hold of the second value.
JavaScript
x
48
48
1
function App() {
2
const [fullName, setFullName] = useState({
3
fName: "",
4
lName: ""
5
});
6
7
function handleChange(event) {
8
const { value, name } = event.target;
9
10
setFullName((prevValue) => {
11
if (name === "fName") {
12
return {
13
fName: value,
14
lName: prevValue.lName
15
};
16
} else if (name === "lName") {
17
return {
18
fName: prevValue.fName,
19
lname: value
20
};
21
}
22
});
23
}
24
console.log(fullName.fName);
25
console.log(fullName.lName);
26
27
return (
28
<div className="container">
29
<h1>Hello {fullName.lName}</h1>
30
<form>
31
<input
32
name="fName"
33
onChange={handleChange}
34
placeholder="First Name"
35
value={fullName.fName}
36
/>
37
<input
38
name="lName"
39
onChange={handleChange}
40
placeholder="Last Name"
41
value={fullName.lName}
42
/>
43
<button>Submit</button>
44
</form>
45
</div>
46
);
47
}
48
When I console.log the lName, “undefined” pops up, while fName works perfect.
Advertisement
Answer
In the else if (name === "lName")
return statement you’re returning a key named lname
instead of lName
.