gpt4 book ai didi

reactjs - Formik + Yup : How to immediately validate form before submit?

转载 作者:行者123 更新时间:2023-12-03 15:42:26 28 4
gpt4 key购买 nike

我想显示表单安装时的字段错误。提交后没有。
是的:

const validation = Yup.object().shape({
field: Yup.string().required('Required')
});
形式:
<Formik
initialValues={initialValues}
validationSchema={validation}
validateOnMount
>
...
</Formik>
感谢帮助!

最佳答案

简单的答案是

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]
如果您使用 ErrorMessage中的 formik ,它将无法工作,因为它会检查 touched[name] === true以显示消息,因此您需要创建自己的显示错误的方式,而仅检查 errors[name]

关于reactjs - Formik + Yup : How to immediately validate form before submit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61882834/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com