reactjs - 表单值在提交时为空白
问题描述
无法email and token
从下表中选择值。点击提交时显示为空白。谁能告诉我哪里做错了?
https://codesandbox.io/s/dazzling-kirch-1gqq4?file=/src/App.js
import React, { useRef, useEffect, useState } from "react";
import { useForm } from "react-hook-form";
import Axios from "axios";
const CreateLink = () => {
const [email, setEmail] = useState("");
const [token, setToken] = useState("");
const {
handleSubmit,
register,
formState: { errors }
} = useForm();
const onSubmit = (e) => {
e.preventDefault();
alert(`Sending Email ${email}`);
const fetchData = async () => {
try {
const res = await Axios.post(
"http://localhost:8000/service/createlink",
email,
token
);
if (res.data.success) {
console.log("Link token created:" + res.data.success);
}
} catch (e) {
console.log(e);
}
};
fetchData();
};
return (
<div className="App">
<h1>Create Link</h1>
<form onSubmit={handleSubmit(onSubmit)} className="linkForm inputForm">
<div className="inputField">
<input
name="email"
placeholder="email"
type="text"
value={email}
onChange={(e) => setEmail(e.target.value)}
{...register("email", {
required: "Email is required",
pattern: {
value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,
message: "Invalid email address"
}
})}
/>
<span className="loginErrorTextFormat">
{errors.email && <p>{errors.email.message}</p>}
</span>
</div>
<div className="inputField">
<input
placeholder="token"
name="token"
type="text"
value={token}
onChange={(e) => setToken(e.target.value)}
{...register("token", {
required: "Token is required"
})}
/>
<span className="loginErrorTextFormat">
{errors.token && <p>Input is not valid</p>}
</span>
</div>
<input type="submit" />
</form>
</div>
);
};
export default CreateLink;
解决方案
因为register
返回一个对象有属性onChange
。所以它会覆盖你的,onChange
你只需要移动onChange
register
{...register("token", {
required: "Token is required"
})}
onChange={(e) => setToken(e.target.value)}
推荐阅读
- javascript - Javascript 导出函数作为一个类
- reactjs - 在同一层级子组件之间共享存储更改事件
- kendo-ui - 向网格添加新行时停止 detailInit 崩溃?
- linux - 为什么我的 ffmpeg 进程在没有 subprocess.run 的 stdin 参数的情况下永远等待?
- c# - 如何使用存储库模式和 ADO .net 进行连接
- python - Python/ Dash:如何在 Dash 上按日期对案例进行散点图?
- google-sheets - 如何使我的 IF 语句执行以下操作?
- docker - 堆叠后 Docker 套接字崩溃
- oracle - DBMS_PARALLEL_EXECUTE 退出而不运行任务
- php - 停止 PHP 表单中的重复条目