reactjs - 尝试显示输入值,但控制台reactjs中没有任何错误显示
问题描述
我试图从以下表单显示输入值,但没有出现,我所做的是:我编写了代码并修复了每个错误立即出现。我认为这将防止任何未来的问题,但它没有工作。它最终在控制台中没有任何错误+不显示输入值
我查看了多个网站,但没有一个对我有帮助
这是我的代码:
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;
出现了一些错误,但我修复了所有错误,任何帮助将不胜感激。
解决方案
jour JSX 中不使用函数 handleChange,您必须将每个输入与其状态值绑定,如 value={stateInput} 并将事件 onChange 与函数 handleChange 绑定:
例子:
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}
/>;
并对其他输入重复相同的操作。
推荐阅读
- windows - 如何在 ID 上获得没有地址的代码签名证书?
- node.js - 在 Mongodb 的嵌套无模式数组中搜索
- sql - 为每条记录运行子查询?
- reactjs - 无法从 React 中使用 Link Tag 的组件更新状态
- r - R - 关于使用 metafor 包缩小森林图的快速问题;太宽
- python - FileNotFound 错误下载 roberta-model 句子转换器
- reactjs - 如何在选择第一个选择的第一组值时显示?(有2种不同的选择)
- php - WooCommerce:比较变体属性值
- c# - 以编程方式将数据插入 MDS 实体
- azure - 我可以在 azure 中升级 vm 的操作系统吗?