【发布时间】:2021-10-23 08:31:27
【问题描述】:
我正在学习 Node 和 React,现在知道如何集成它们,并且正在努力使用 Node 和 React 进行注册和登录。我正在一步一步地进行,所以目前我正在尝试至少获取输入并将它们作为数组放入状态,然后在我得到之后我将去散列密码,将数据发送到 Node 和数据库等。
不过,目前我有点卡在这里。我正在尝试将用户名和密码输入我的“详细信息”状态,然后将其呈现在屏幕上(或控制台记录它,或其他),但是当我这样做时,它会很快显示然后消失。为什么详细信息状态恢复为空数组?我如何解决它?我在这里做了一些研究,但无法弄清楚。
import { useState } from 'react';
function App() {
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
const [details, setDetails] = useState([]);
const readUsername = (e) => {
setUsername(e.target.value);
}
const readPassword = (e) => {
setPassword(e.target.value);
}
const updateDetails = () => {
setDetails([username, password]);
}
return (
<div>
<h1>Register</h1>
<form>
<label htmlFor="username" name="username">Username: </label>
<input htmlFor="username" name="username" onChange={readUsername} />
<br/>
<label htmlFor="password" name="password">Password: </label>
<input htmlFor="password" name="password" type="password" onChange={readPassword} />
<br/>
<button onClick={updateDetails}>Submit</button>
</form>
<h1>{details}</h1>
</div>
);
}
export default App;
【问题讨论】:
-
我的猜测是因为您没有将值绑定到输入,例如:
<input htmlFor="username" name="username" onChange={readUsername} value={username} />。话虽如此,我始终建议不要维护冗余状态,details纯粹源自username和password。
标签: javascript reactjs input state