我正在尝试对我的表单进行验证以做出反应。我选择了“react-hook-form”库。但我不断收到错误“Path.split 不是函数。即使在使用他们网站上给出的默认示例后,我也遇到了同样的错误。这是官方网站中给出的默认代码。
import React from "react";
import { useForm } from "react-hook-form";
export default function App() {
const { register, handleSubmit, watch, errors } = useForm();
const onSubmit = data => console.log(data);
console.log(watch("example")); // watch input value by passing the name of it
return (
{/* "handleSubmit" will validate your inputs before invoking "onSubmit" */}
<form onSubmit={handleSubmit(onSubmit)}>
{/* register your input into the hook by invoking the "register" function */}
<input name="example" defaultValue="test" ref={register} />
{/* include validation with required or other standard HTML validation rules */}
<input name="exampleRequired" ref={register({ required: true })} />
{/* errors will return when field validation fails */}
{errors.exampleRequired && <span>This field is required</span>}
<input type="submit" />
</form>
);
}
Run Code Online (Sandbox Code Playgroud)
Ami*_*mit 75
react-hook-form 从 6.XX 更新到 7.0.0 并且有重大变化:
你必须全部替换ref={register}为{...register('value_name')}
版本 6.XX:
<input ref={register({ required: true })} name="test" />
Run Code Online (Sandbox Code Playgroud)
7.0.X 版:
<input {...register('test', { required: true })} />
Run Code Online (Sandbox Code Playgroud)
Cás*_*rda 15
具有必需和错误消息功能的简单输入,更新中的必要更改:
function MyComponent(props) {
const { register, handleSubmit, errors } = useForm();
const onSubmit = (values) => {...};
return (
<div>
<form onSubmit={handleSubmit(onSubmit)}>
<input
name="message"
autoComplete="off"
ref={register({
required: "Required",
})}
/>
{errors.message && errors.message.message}
<input type="submit" />
</form>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
function MyComponent(props) {
const { register, handleSubmit, formState: { errors }} = useForm();
const onSubmit = (values) => {...};
return (
<div>
<form onSubmit={handleSubmit(onSubmit)}>
<input
name="message"
autoComplete="off"
{...register("message", {
required: "Required",
})}
/>
{errors.message && errors.message.message}
<input type="submit" />
</form>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
除了注册修复之外,如果您使用 useForm() 中的错误,现在错误功能将从formState导出。
值得一提的是,如果您正在使用material ui或类似的东西, whereref={ref}会引发错误(因为它期望使用不同的道具名称而不是ref),您可能想要
import { TextField } from '@material-ui/core';
const { ref, ...rest } = register('value_name')
return (
<TextField inputRef={red} {...rest} />
)
Run Code Online (Sandbox Code Playgroud)
有这种迁移指南这里,但还是值得一提
| 归档时间: |
|
| 查看次数: |
20182 次 |
| 最近记录: |