Reputation: 479
I'm doing just basic stuff. I've one input field and a button wrap inside of form tag. using useState
hook for setting input user name.
browser is giving me error:- TypeError: setUser is not a function
and fault in line no. 21.
18 | type="text"
19 | placeholder="nick name"
20 | value={user}
> 21 | onChange={ e => { setUser(e.target.value) } }
| ^ 22 | />
23 | <button type="submit" onClick={StartQuiz}>
24 | Start the Quiz
import React, { useContext, useState } from "react";
import { QuizContext } from "../Helpers/Context";
function MainMenu() {
const { user, setUser } = useState("");
const { setGame } = useContext(QuizContext);
const StartQuiz = (event) => {
event.preventDefault();
setGame("quiz");
setUser("");
};
return (
<div className="Menu">
<form>
<input
type="text"
placeholder="nick name"
value={user}
onChange={ e => { setUser(e.target.value) } }
/>
<button type="submit" onClick={StartQuiz}>
Start the Quiz
</button>
</form>
</div>
);
}
export default MainMenu;
Upvotes: 0
Views: 946
Reputation: 452
Try this, you have an issue with how you declared the useState in with {} and not [].
import React, { useContext, useState } from "react";
import { QuizContext } from "../Helpers/Context";
function MainMenu() {
const [user, setUser] = useState("");
const { setGame } = useContext(QuizContext);
const StartQuiz = (event) => {
event.preventDefault();
setGame("quiz");
setUser("");
};
return (
<div className="Menu">
<form>
<input
type="text"
placeholder="nick name"
value={user}
onChange={(e) => setUser(e.target.value)}
/>
<button type="submit" onClick={StartQuiz}>
Start the Quiz
</button>
</form>
</div>
);
}
export default MainMenu;
Upvotes: 0
Reputation: 372
useState returns an array, not an object.
// this is wrong
//const { user, setUser } = useState("");
// this is correct
const [ user, setUser ] = useState("");
Upvotes: 1
Reputation: 291
try use onChange={ e => setUser(e.target.value)}
or defined a function
example:
const handleChange = (e) => {
const {value, name} = e.target;
setUser(value)
}
<input
type="text"
placeholder="nick name"
value={user}
onChange={ handleChange } }
/>
Upvotes: 0
Reputation: 71
you used curly brackets instead of square brackets. just change your code to
const [ user, setUser ] = useState("");
and it should run.
Upvotes: 2