javascript - 如何处理子组件中的输入错误验证反应钩子形式
问题描述
我制作了一个名为Input
. 现在我想知道错误是否在那个组件(Input
组件)中给我看。我Input
在组件内部使用Login
组件,并react-hook-form
用于验证表单。
输入组件
const Input = ({data, extraData, register, errors})=>{
const inp = extraData.name
return <Fragment>
{
extraData.id &&
extraData.label &&
<label htmlFor={extraData.id}>{extraData.label}</label>
}
<input {...register(extraData.name, {...data})} {...extraData} />
{data.required && <Fragment>
{errors.inp?.type === 'required' && <p>required</p>}
</Fragment>}
</Fragment>
}
export default Input;
登录组件
const Login = ()=>{
const {handleSubmit, register, formState: {errors}} = useForm()
const onS = (data) =>{
console.log(data)
}
return <Fragment>
<form onSubmit={handleSubmit(onS)}>
<Input data={
{
minLength : 5,
maxLength : 30,
required : true,
}
} extraData ={
{
type : 'text',
placeholder : 'Enter Your Name',
name : 'name',
label : 'name', id : 'name1'
}
} register={register} errors={errors}/>
<Input data={
{
minLength : 5,
maxLength : 30,
required : true,
}
} extraData ={
{
type : 'text',
placeholder : 'Enter Your Family',
name : 'Family',
label : 'Family', id : 'Family1'
}
} register={register} errors={errors}/>
<button>Submit</button>
</form>
</Fragment>
}
export default Login;
解决方案
在Input
组件中试试这个:
const Input = ({data, extraData, register, errors})=>{
const inp = extraData.name
return <Fragment>
{
extraData.id &&
extraData.label &&
<label htmlFor={extraData.id}>{extraData.label}</label>
}
<input {...register(extraData.name, {...data})} {...extraData} />
{errors[extraData.name] && <span>{errors[extraData.name].message}</span>}
</Fragment> }
export default Input;
然后在Login
组件中替换required : true
为required : "your message"
推荐阅读
- javascript - 数据结构和算法
- vb.net - vb.net 表单处理来自另一个表单的事件
- arrays - 查找仅包含二进制数组的最大非连续子集
- multilabel-classification - 使用 multilabel_binarizer 后如何从列号获取类名?
- python-2.7 - openstackclient:引发异常:无法导入名称 redirect_stdout
- python - 如何绘制串行数据
- c++ - OpenSSL:使用 ECC 公钥加密对称密钥
- angular - 在服务中实例化 RxJs 主题
- javascript - 为什么在使用 react-table 时使用 `useTable` 而不是 `ReactTable`
- perl - Perl 中的 eval gawk,如何处理引号?