我正在使用Formik
创建一种书库形式,其中列表中的每个项目都类似于:
author: {
name: 'string',
titles: ['string']
}
我在尝试使用Yup
创建架构以验证那些字段时遇到了麻烦。我有:
schema = Yup.object().shape({
author: Yup.object().shape({
name: Yup.string().min().max().required('...')
}),
author: Yup.array().of(
Yup.object().shape({
titles: Yup.string().min().max().required('...')
})
)
});
初始值也是:
{
author: {name: ''},
author: [{ titles: '' }]
}
我的验证适用于数组,但不适用于名称。我假设问题是对象中的两个元素不能具有相同的名称,但是我不知道如何在初始值和架构中组合这两个字段。我查看了Yup API,发现它们有mixed()
,但我不知道如何根据需要实现。这样可能吗?或者对这两个方法都进行验证?
答案 0 :(得分:1)
作者不是数组,而是一个包含数组和字符串的对象。另外,您要定义两次:
myList = [[0,1,2],[5,None,300]]
if None in myList:
print("Hello")
对于为什么有2个作者密钥感到困惑。上面的模式对应于:
schema = Yup.object().shape({
author: Yup.object().shape({
name: Yup.string().min().max().required('...'),
titles: Yup.arrayOf(Yup.string())
}),
});