J'ai essayé de console.log ces 2 entrées, mais je n'arrive pas à comprendre, est-ce que quelqu'un peut me dire ce que j'ai fait de mal? J'obtiens toujours l'erreur Impossible de lire la propriété "valeur" de null erreur
function printInputs() {
let username = document.getElementById('user').value
let password = document.getElementById('pass').value
console.log(username);
console.log(password);
}
function App() {
return (
<div className="App">
<h1>Log In</h1>
<h1>{code}</h1>
<form>
<input className='userInput' id='user' type='text' placeholder='username' /><br />
<input className='userInput' id='pass' type='password' placeholder='password' /><br />
<input className='userSubmit' type='submit' value='Log In' onSubmit={printInputs()} />
</form>
</div>
);
}
3 Réponses :
onSubmit={printInputs}Vous essayez d'appeler
printInputsimmédiatement (avant que la fonctionrendern'ait renvoyé quoi que ce soit avant que les entrées ne soient dans la page)./ p>
Vous devez passer une fonction à
onSubmit:onSubmit={printInputs()}Cela dit, c'est pas l'approche à adopter pour obtenir des données à partir de formulaires dans React. Voir la section Formulaires du guide React pour la bonne approche.
blockquote >
La façon d'écrire des formulaires dans react. Exemple de travail démo
function App() {
const [state, setState] = React.useState({ username: "", password: "" });
const handleSubmit = e => {
e.preventDefault();
console.log(state);
};
const handleChange = e => {
setState({
...state,
[e.target.name]: e.target.value
});
};
return (
<div className="App">
<h1>Log In</h1>
<form onSubmit={handleSubmit}>
<input
className="userInput"
name="username"
type="text"
placeholder="username"
onChange={handleChange}
/>
<br />
<input
className="userInput"
name="password"
type="password"
placeholder="password"
onChange={handleChange}
/>
<br />
<input className="userSubmit" type="submit" value="Log In" />
</form>
</div>
);
}
dans le premier, n'utilisez jamais de real dom pour manipuler le dom dans Réagissez, utilisez un état pour obtenir de la valeur et le onSumbit est utilisé dans la balise Form
import React, { useState } from "React";
const App = () => {
const [userName, setUserName] = useState("");
const [password, setPassword] = useState("");
const printInputs = () => {
console.log(userName);
console.log(password);
};
return (
<div className="App">
<h1>Log In</h1>
<form onSubmit={printInputs}>
<input
className="userInput"
id="user"
type="text"
placeholder="username"
onChange={event => setUserName(event.target.value)}
/>
<br />
<input
className="userInput"
id="pass"
type="password"
placeholder="password"
onChange={event => setPassword(event.target.value)}
/>
<br />
<input
className="userSubmit"
type="submit"
value="Log In"/>
</form>
</div>
);
};
export default App;
Vous ne pouvez pas utiliser document.getElementById dans ReactJS stackoverflow.com/questions/38093760/...
Est-ce que cela répond à votre question? Comment faire accéder à un élément DOM dans React? Quel est l'équilvalent de document.getElementById () dans React
Vous devez utiliser createRef