如何在 Yup Formik 中验证嵌套条件验证

问题描述 投票:0回答:1

有条件地验证字段,是

      addShippingAddress: Yup.boolean(),
      name: Yup.string().when('addShippingAddress', {
        is: true,
        then: (schema) => schema.required('Field is required'),
      }),

但是,如果正确值比当前对象高 1 级,则此方法不起作用。

  shipping: Yup.object().shape({
    addShippingAddress: Yup.boolean(),
    address: Yup.object().shape({
      name: Yup.string().when('addShippingAddress', {
        // Always says addShippingAddress is undefined, now will always set this as required, even though the addShippingAddress !== true
        is: true,
        then: (schema) => schema.required('Field is required'),
        otherwise: (schema) => schema,
      }),

是否有条件为 Yup/Formik 中的嵌套对象添加所需的验证?

版本:

    "yup": "^1.2.0"
    "formik": "^2.4.2",
javascript reactjs formik yup
1个回答
0
投票

不认为这是可能的,需要将

addShippingAddress
变量移动到与嵌套条件相同的对象中。

    address: Yup.object().shape({
      addShippingAddress: Yup.boolean(),
      name: Yup.string().when('addShippingAddress', {
        is: true,
        then: (schema) => schema.required('Field is required'),
      }),


  // Formik Init vals
  shipping: {
    address: {
      addShippingAddress: false,
      name: '',
      ...
    },
© www.soinside.com 2019 - 2024. All rights reserved.