为什么Yup字符串验证在成为对象时不会引发错误?

时间:2019-05-13 19:10:45

标签: reactjs formik yup

我做了一个example,以说明发生了什么(我在Google上首次搜索了“ formik example”)。

我正在使用react-select,它在状态下存储具有valuelabel属性的对象。

我正在使用Yup.string().required()验证Formik表单,但没有显示任何错误。为什么没有显示任何错误?这是故意的还是一个错误?该如何解决?

1 个答案:

答案 0 :(得分:1)

根据Yup的文档:

  

默认情况下,字符串的强制转换逻辑是在值存在的情况下调用toString。空值不被强制转换(使用sure()将空值强制转换为空字符串)。

换句话说,它在选择结果上调用toString()(即它是一个字符串)。您可以使用"[object Object]"documentation here)对其进行修复:

strict()

当然,那么您选择的输入将无法通过验证,因此您需要将其更改为如下所示:

validationSchema={Yup.object().shape({
  select: Yup.string()
    .strict(true)
    .required(" select Required")
})}