2

私のデータ構造は次のようになります。

{
  foo: true,
  bar: {
    baz: [{label: 'mario', url: 'https://nintendo.com'}]
  }
}

そして、私のyupバリデータは次のようになります。

  const schema = yup.object().shape({
    foo: yup.boolean(),
    bar: yup.mixed().when('foo', {
      is: true,
      then: yup.object().shape({
        baz: yup.array.of(
          yup.object().shape({
            label: yup.string.required(),
            url: yup.url().required()
          })
        )
      }),
      otherwise: yup.object().nullable(true)
    })
  })

しかし、検証は機能していませんbar.baz。の場合、必要なオブジェクトを含む配列が指定されていない場合でも、bar はエラーをスローしませんfootrue

他のものとして検証するように設定barした場合は、次のように言います。

  bar: yup.mixed().when('foo', {
    is: true,
    then: yup.string().required()
    otherwise: yup.string.nullable(true)
  })

期待どおりのエラーがスローbarされます。私は何が欠けていますか?

4

1 に答える 1