简单的答案是
将initialTouched 传递给Formik,这将是一个对象,其中包含要显示错误消息的字段的键和这些键的值true。
例如
<Formik
initialValues={initialValues}
initialTouched={{
field: true,
}}
validationSchema={validation}
validateOnMount
>
...
</Formik>
但是有很多方法可以做到这一点,但您可以创建一个在初始渲染时调用 validateForm 的组件
const ValidateOnMount = () => {
const { validateForm } = useFormikContext()
React.useEffect(() => {
validateForm()
}, [])
// the return doesn't matter, it can return anything you want
return <></>
}
您也可以使用validateOnMount 并在所有要显示错误消息的字段上将initialTouched 设置为true(也许您只想在初始装载时显示某些字段的错误消息)来执行相同操作。
<Formik
validateOnMount
initialValues={initialValues}
validationSchema={validation}
initialTouched={{
field: true
}}
{...rest}
>
</Formik>
initialTouched 应该是一个对象,该对象具有您要验证的所有字段的键,这些字段位于 initialValues 中,但值为 true,这意味着您已经触及该字段。
另一种方法是仅将validateOnMount 传递给Formik 并显示任何错误消息而不检查touched[name]。
如果您使用formik 中的ErrorMessage,它将不起作用,因为它会检查touched[name] === true 以显示消息,因此您需要创建自己的显示错误的方式,但只检查errors[name]。