您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何正确使用Formik的setError方法?(反应库)

如何正确使用Formik的setError方法?(反应库)

Formik作者在这里

setError在v0.8.0已弃用,并重命名为setStatus。您可以使用setErrors(errors)setStatus(whateverYouWant)handleSubmit函数中获得所需的行为,如下所示:

handleSubmit = async (values, { setErrors, resetForm }) => {
   try {
     // attempt API call
   } catch(e) {
     setErrors(transformMyApiErrors(e))
     // or setStatus(transformMyApiErrors(e))
   }
}

如果您使用setErrors,您的错误将被Formik的下一个validatevalidationSchema调用清除,这些错误可以由用户键入(更改事件)或模糊输入(模糊事件)触发。注意:这是假设您尚未手动设置validateOnChange和设置validateOnBlur道具false(它们是true认设置)。

IMHOsetStatus实际上是理想的选择,因为它将错误消息放置在Formik状态的单独部分中。然后,您可以像这样决定如何/何时向最终用户显示此消息。

// status can be whatever you want
{!!status && <FormError>{status}</FormError>}
// or mix it up, maybe transform status to mimic errors shape and then ...
{touched.email && (!!errors.email && <FormError>{errors.email}</FormError>) || (!!status && <FormError>{status.email}</FormError>) }

请注意,的存在或价值对status阻止下次提交表单没有影响。如果验证失败, Formik仅中止提交过程

其他 2022/1/1 18:16:50 有493人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶