【问题标题】:Set Yup validation for attribute of Yup array of objects为 Yup 对象数组的属性设置 Yup 验证
【发布时间】:2021-12-21 22:47:33
【问题描述】:

我想为 Yup 对象数组中的 number 属性设置验证,这样

  1. 数组中每个对象的权重必须 >=0 且
  2. 数组中所有对象的权重之和也必须小于 100。

const ParamValidator = Yup.object()
         .shape({
         params: Yup.array()
            .of(
                Yup.object()
                    .shape({
                        name: Yup.string.max(30).required(),
                        weight: Yup.number().min(0).max(100).required(),
                    })
                    .required(),
            )
            .required()

但是我发现,我可以用最小值和最大值来说明单个物体的重量 (1.),但不能 (2.) 说明如何放置和检查所有物体重量的总和。 仅使用 Yup 验证

【问题讨论】:

    标签: arrays typescript validation yup


    【解决方案1】:
        const ParamValidator = Yup.object()
         .shape({
         params: Yup.array()
            .of(
                Yup.object()
                    .shape({
                        name: Yup.string.max(30).required(),
                        weight: Yup.number().min(0).max(100).required(),
                    })
                    .required(),
            )
            .required()
            .test('params',
                  'sum of weights of all objects of params should be <= 100',
                  (values: any[]) => values.reduce((acc, curr) => acc + curr.weight, 0) <= 100,)
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2022-10-14
    • 2021-12-27
    • 2022-08-20
    • 2020-12-11
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多