我试图显示以下表单中的输入值,但没有任何显示,我所做的是:我编写了代码并修复了每个错误都会立即出现。我认为这将防止任何未来的问题,但它没有奏效。它最终在控制台中没有任何错误 + 不显示输入值
我浏览了多个网站,但没有一个对我有帮助
这是我的代码:
import * as React from "react";
import { useState } from "react";
import { useForm } from "react-hook-form";
function Users(props) {
const [name, setName] = useState();
const [username, setUsername] = useState();
const [surname, setSurname] = useState();
const [active, setActive] = useState();
const [currentDepartment, setCurrentDepartment] = useState("");
const { register, option } = useForm();
const handleChange = (e) => {
e.preventDefault();
console.log(e);
};
function handleSubmit(e) {
e.preventDefault();
props.setData((prev) => prev.concat({ username, name, surname, active }));
}
let password = "MyPA55w()rd";
let upper_count = 0;
let lower_count = 0;
let number_count = 0;
let symbol_count = 0;
for (let i = 0; i < password.length; i++) {
let c = password.charAt(i);
if ("A" <= c && c <= "Z") {
upper_count += 1;
} else if ("a" <= c && c <= "z") {
lower_count += 1;
} else if ("0" <= c && c <= "9") {
number_count += 1;
} else {
symbol_count += 1;
}
}
return (
<form>
User Name
<input
defaultValue={username}
onChange={(e) => setUsername(e.target.value)}
type="text"
placeholder="username"
name="username"
ref={register}
/>
<br />
Name
<input
defaultValue={name}
onChange={(e) => setName(e.target.value)}
type="text"
placeholder="name"
name="name"
ref={register}
/>
<br />
Surname
<input
defaultValue={surname}
onChange={(e) => setSurname(e.target.value)}
type="text"
placeholder="surname"
name="surname"
ref={register}
/>
<br />
Choose Your Department
<select defaultValue={currentDepartment}>
<option value="N/A">Choose Your Department</option>
<option value="1">Electrical Engineering</option>
<option value="2">Mechanical Engineering</option>
<option value="3">Chemical Engineering</option>
<option value="4">Computer Sciense and Engineering</option>
</select>
<br />
Password
<input
defaultValue="{password}"
type="password"
placeholder="password"
name="password"
ref={register({
required: true,
minLength: 8,
maxLength: 16,
})}
/>
<br />
Profile Picture
<input type="file" />
<br />
Email
<input type="email" placeholder="email" name="Email" ref={register} />
<br />
Day of Start
<input
type="date"
placeholder="dateOfStart"
name="date of start"
ref={register}
/>
<br />
Birthday
<input
defaultValue="Birthday"
type="date"
placeholder="Birthday"
name="Birthday"
ref={register}
/>
<br />
is Active
<input
defaultValue={active}
type="checkbox"
onChange={(e) => setActive(e.target.value)}
/>
<button onSubmit={handleSubmit}> Submit </button>
</form>
);
}
export default Users;
出现了一些错误,但我修复了所有错误 任何帮助将不胜感激。
答案 0 :(得分:1)
jour JSX 中没有使用 handleChange 函数,你必须像这样 value={stateInput} 绑定每个输入和它的状态值,并用函数 handleChange 绑定 onChange 事件:
示例:
const handleUserNameChange = (e) => {
e.preventDefault();
console.log(e.target.value); //username value
setUsername(e.target.value);
};
<input
value={username}
defaultValue={username}
onChange={handleUserNameChange}
type="text"
placeholder="username"
name="username"
ref={register}
/>;
对其他输入重复相同的操作。