我想使用react-hook-form在输入字段中提供默认值。 首先,我从API端点检索用户数据,然后将状态users
设置为该用户数据。 然后,我将状态users
传递给useForm()
的defaultValues
参数。
import React, { useState, useEffect } from "react";
import { useForm } from "react-hook-form";
import axios from "axios";
function LoginFile() {
const [users, setUsers] = useState(null);
useEffect(() => {
axios
.get("http://localhost:4000/users/1")
.then((res) => setUsers(res.data));
}, []);
useEffect(() => {
console.log(users);
}, [users]);
const { register, handleSubmit, errors } = useForm({
defaultValues: users,
});
return (
<div>
<form onSubmit={handleSubmit(onSubmit)}>
Email <input type="email" name="email" ref={register} /><br />
firstname <input name="firstname" ref={register} /><br/>
<input type="submit" />
</form>
</div>
);
}
export default LoginFile;
我按照上述代码操作,但是并没有像预期的那样生效。所有的输入字段仍然是空的。我想让表单输入字段有一些默认值。
reset(res.data)
会将defaultValue重置为API用户数据,例如{email: "subro@gg.com", firstname: "subrato"}
吗?我问这个问题是因为我的想法是reset意味着清空输入字段。 - Subrato Pattanaik{id: 0, email; "", firstname:""}
这个默认值可以吗?我正在使用您的第一种方法。 - Subrato Pattanaiknull
时,它会显示一个错误,例如无法读取空值 "email"
,但是当我将状态设置为[]
时,它会在输入字段中显示空值。 - Subrato Pattanaik