当前位置: 首页 > 知识库问答 >
问题:

不能将类型“undefined”分配给类型“schema”。是的

胡桐
2023-03-14
const claimFormValidationSchema = Yup.object().shape<ClaimApplicationForm>({
  id: Yup.number().notRequired(),
  claimType: Yup.mixed().required(),
  claimAmount: Yup.number().required('Claim Amount is Required'),
  currencyCode: Yup.string().required(),
  rate: Yup.number().required('Rate is Required'),
  convertedAmount: Yup.number().required('Converted Amount is Required'),
  extra: Yup.array().of(
    Yup.lazy((value) => {
      if ('required' in value) {
        if (value.required === true) {
          return Yup.object().shape({
            value: Yup.string().required(),
          });
        } else {
          return Yup.object().shape({
            value: Yup.string().notRequired(),
          });
        }
      }
    }),
  ),
});

共有1个答案

涂溪叠
2023-03-14

您的问题出在额外属性中

  extra: Yup.array().of(
    Yup.lazy((value) => {
      // outter if
      if ('required' in value) {
        if (value.required === true) {
          return Yup.object().shape({
            value: Yup.string().required(),
          });
        } else {
          return Yup.object().shape({
            value: Yup.string().notRequired(),
          });
        }
      }          
      // end outter if

      // if reaches here, nothing is returned
    }),
  ),

您需要在yup.lazy中返回一些内容,但是如果此条件不是true'required',则不会返回任何内容,从而给出undefined和错误。

我不确定你需要退什么,但一定是什么。

 类似资料: