提交Formik表单而无字段触摸时,如何在TextField上显示验证错误

时间:2020-10-08 20:46:20

标签: javascript reactjs formik

我的Formik表单带有validateSchema和这样实现的输入字段:

<TextField
  error={Boolean(touched.email && errors.email)}
  fullWidth
  helperText={touched.email && errors.email}
  label="Email address"
  name="email"
  onBlur={handleBlur}
  onChange={handleChange}
  required
  value={values.email}
  variant="outlined"
/>

如果用户触摸该字段,它将被验证并且他将看到错误消息。但是,如果他不触摸该字段并尝试提交该表单,验证将阻止该表单,但不会显示错误消息。

是否可以强制每个字段在“提交”或涉及此情况的其他方面进行触摸?

1 个答案:

答案 0 :(得分:0)

实际上,您显示错误的条件不是一个好方法,

line three                            # old 'line one - a long line` is overwritten
line two                              # `printf "\n"` won't print anything new on this line so the old contents won't be overwritten, while the cursor will be moved to the next line
<cursor>                              # cursor is left sitting on this line

单击提交按钮后,您可以访问helperText={touched.email && errors.email} 方法,并且在onSubmit内可以检查表单onSubmit是否存在(如果存在),请通过本地状态并让组件更新,并以本地状态将error显示为错误。

使用helperText并不是一个好方法,特别是在您有多个输入的情况下。无法同时集中所有注意力。