javascript - 是的,基于嵌套对象内的嵌套对象进行验证

标签 javascript reactjs formik yup

我目前有一个如下所示的对象:

const initialValues = {
  created: {
    position: 1,
    name: 'created',
    type: 'timestamp',
    desc: 'The date and time the lead is created',
    mapping: {
      name: '',
      defaultValue: '',
      map: false
    }
  }
}

我希望当映射对象中的映射值设置为 true 时,映射对象中的名称成为必需的。我已尝试通过执行以下操作:

const validationSchema = yup.object({
  created: yup.object().when('mapping.map', {
    is: true,
    then: yup.object({
      mapping: yup.object({
        name: yup.string().required('name is required')
      })
    })
  })
})

我相信我没有足够的隧道来准确设置映射对象的验证,任何和所有帮助/建议将不胜感激。

最佳答案

我找到了执行以下操作的解决方案:

const validationSchema = yup.object({
  created: yup.object().shape({
    mapping: yup.object().shape({
      map: yup.boolean(),
      defaultValue: yup.string(),
      name: yup.string().when('map', {
        is: true,
        then: yup.string().required('name is required')
      })
    })
  })
})

关于javascript - 是的,基于嵌套对象内的嵌套对象进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72478522/

相关文章:

reactjs - 使用 Redux 时如何声明 ReactJS 默认 props?

reactjs - 需要在 JSX 中设置条件的帮助

reactjs - 如何在Prod中使用Docker和Nginx运行React?

javascript - 在 react-draft-wysiwyg 上使用 formik

reactjs - Formik + Yup : How to immediately validate form before submit?

javascript - 如何在 bitcoinjs-lib 中创建新的 PSBT 交易?

javascript - 如何使用 $q 解析从 `$http` 返回数据?

javascript - 未捕获的类型错误 : undefined is not a function

reactjs - Formik + yup : how to validate a location schema where the fields(country, state, city) 不是强制的,但是如果填了一项,是不是每项都应该填?

javascript - 连接嵌套对象数组的元素