reactjs - 为什么 handlesubmit 不适用于这个 react-hook-form 实现?
问题描述
我有这个表格:
<form onSubmit={handleSubmit(onSubmit)}>
<Input
onChange={(ev) => handlePriceInputChange(ev)}
type="number"
value={price}
innerRef={register("voucherPrice", { required: true })}
></Input>
<p>{errors.voucherPrice?.message}</p>
<Button
variant="contained"
sx={{ mt: 1, mr: 1 }}
type="submit"
>
{"Continue"}
</Button>
</form>
我已经配置了 react-hook-form 像:
const {
register,
handleSubmit,
formState: { errors },
} = useForm({
resolver: yupResolver(schema),
});
const onSubmit = (data) => {
console.log("?", data);}
我试图console.log("?", data)
在开发工具控制台上查看,我得到:
Warning: Unexpected ref object provided for input. Use either a ref-setter function or React.createRef().
但它似乎没有到达控制台日志。
解决方案
您的使用register
不正确,因为 v7它将返回一个对象而不是 ref,它可以传播到一个组件。现在您正在尝试将对象传递给innerRef
而不是实际的ref
,因此会出现错误。
在你的情况下,<Controller />
如果你想将 传递ref
给你的innerRef
道具,你应该使用。
<Controller
name="voucherPrice"
control={control}
rules={{ required: true }}
render={({ field: { ref, ...field } }) =>
<Input
{...field}
type="number"
innerRef={ref}
/>
}
/>
推荐阅读
- javascript - React.js 和 [...](扩展)语法
- react-native - 再次运行 componentDidMount 函数 React Native
- javascript - 变量在控制台中返回 null
- python - 如何对熊猫数据框进行非规范化
- python - Python ValueError:形状不匹配:无法将对象广播到单个形状
- python-3.x - matplotlib 中的日志图正在创建两条线
- kubernetes - 单台计算机上节点的公共和私有 IP 地址 kubernetes on coreos
- json - 迭代 ResponseBody 中的项目并将它们放入 HashMap Spring Boot
- python-3.x - Jupyter notebook 无法连接到内核
- python - 将列表理解转换为简单的 for 循环