0

检查布尔值时,我需要验证一个数字数组,并且我在控制台中收到此错误:

Uncaught (in promise) TypeError: Cannot read property 'length' of undefined
    at yupToFormErrors (formik.esm.js:701)

这是我的是的验证架构。

export default yup.object<myFormikForm.FormValues>({
  allowOther: yup.boolean(),
  arrayNumbers: yup
    .array<number, *>(
      yup
        .number()
        .nullable(true)
        .transform((value, originalValue) =>
          originalValue === '' ? null : value,
        )
        .min(
          minSize,
          oneLine`
          Must be greater or equal than
          0
        `,
        ),
    )

    .when('allowOther', (allowOther: boolean, schema) =>
      allowOther
        ? schema
        : schema

            .required('Required')
            .test(
              'hasAtLeastOneValue',
              'Specify at least one value',
              value =>
                Array.isArray(value) ? value.some(Number.isFinite) : true,
            ),
    ),
});

顺便说一下表格工作正常,但我想摆脱这个错误,有什么想法吗?谢谢。

4

1 回答 1

0

你可以yup.ref()在你的情况下使用。在此处了解更多信息。

 allowOther: Yup.boolean(),
 arrayNumbers: Yup.array().nullable().min(Yup.ref('allowOther'), 'Must be greater or equal than 0').required(Yup.ref('allowOther'), "arrayNumbers are required"),
于 2020-08-07T08:36:48.750 回答