formik - 获取对象属性错误

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

如何访问对象属性错误?我有这个数组:

  cars: array()
        .of(
            object({
                brandId: number().positive().required(),
                name: string(),
            }),
        )

如果用户选择特定品牌,比如说品牌 A,那么我想将“名称”属性设为必需。

通常它是一个带有复选框的表单,每个复选框都有自己的输入。因此,对于复选框一,我有品牌 A,当我检查带有品牌 A 的复选框时,我希望该复选框的输入是必需的,但其他复选框的其他输入不应是必需的。如何实现这一点,如何单独验证每个对象?

javascript reactjs formik yup
1个回答
0
投票

如果

when
等于例如,您可以使用
brandId
设置条件
3
name
属性成为必需的。

https://codesandbox.io/s/yup-playground-forked-3d3t6c?file=/src/index.js

import * as yup from "yup";

const schema = yup.object().shape({
  cars: yup.array().of(yup.object({
        brandId: yup.number().positive().required(),
        name: yup.mixed().when('brandId', {
          is: 3,
          then: yup.string().required(),
        })
    })),
  });
  
const obj1 = { cars: [{ brandId: 5 }] }; // valid
const obj2 = { cars: [{ brandId: 3 }] }; // invalid, name is required
© www.soinside.com 2019 - 2024. All rights reserved.