react-hook-form 验证不适用于自定义字段数组
react-hook-form validation not working with custom fields array
我正在使用带有自定义动态输入字段数组的 react-hook-form,当我点击提交按钮时看起来验证正在工作,但它没有显示错误消息,我正在创建状态:
const [formFields, setFormFields] = useState([
{
height: 45,
label: "tv",
placeholder: "555",
name: "tv",
maxWidth: 203,
error: errors.tv,
value: ""
},
{
height: 45,
label: "radio",
placeholder: "90%",
name: "radio",
maxWidth: 126,
error: errors.radio,
value: ""
},
{
height: 45,
label: "instagram",
placeholder: "90%",
name: "instagram",
maxWidth: 126,
error: errors.instagram,
value: ""
}
]);
并将输入创建为:
{formFields.map((item, index) => {
return (
<div key={index}>
<TextInput
name={item.name}
label={item.label}
height={item.height}
placeholder={item.placeholder}
error={item.error}
value={item.value}
inputRef={register({
required: true
})}
onChange={fieldOnChange(index)}
/>
{item.error && <span>Enter a valide value</span>}
</div>
);
})}
你可以查看demo
有什么帮助吗?
因为你在useState中形成了formFields。它只运行一次。表明它已经捕获了错误值,即第一个初始值。您需要使用 useEffect 来跟踪错误值的变化或将 item.error 的条件更改为直接错误。
react-hook-form
使用其错误进行验证,即在您的情况下它应该是
{errors[item.name] && <span>Enter a valid value</span>}
我正在使用带有自定义动态输入字段数组的 react-hook-form,当我点击提交按钮时看起来验证正在工作,但它没有显示错误消息,我正在创建状态:
const [formFields, setFormFields] = useState([
{
height: 45,
label: "tv",
placeholder: "555",
name: "tv",
maxWidth: 203,
error: errors.tv,
value: ""
},
{
height: 45,
label: "radio",
placeholder: "90%",
name: "radio",
maxWidth: 126,
error: errors.radio,
value: ""
},
{
height: 45,
label: "instagram",
placeholder: "90%",
name: "instagram",
maxWidth: 126,
error: errors.instagram,
value: ""
}
]);
并将输入创建为:
{formFields.map((item, index) => {
return (
<div key={index}>
<TextInput
name={item.name}
label={item.label}
height={item.height}
placeholder={item.placeholder}
error={item.error}
value={item.value}
inputRef={register({
required: true
})}
onChange={fieldOnChange(index)}
/>
{item.error && <span>Enter a valide value</span>}
</div>
);
})}
你可以查看demo
有什么帮助吗?
因为你在useState中形成了formFields。它只运行一次。表明它已经捕获了错误值,即第一个初始值。您需要使用 useEffect 来跟踪错误值的变化或将 item.error 的条件更改为直接错误。
react-hook-form
使用其错误进行验证,即在您的情况下它应该是
{errors[item.name] && <span>Enter a valid value</span>}