Reactjs 福米克公司;Yup-如何为数组和字符串创建架构

Reactjs 福米克公司;Yup-如何为数组和字符串创建架构,reactjs,validation,formik,yup,Reactjs,Validation,Formik,Yup,我正在使用Formik创建一个图书库表单,其中列表中的每一项看起来都像: author: { name: 'string', titles: ['string'] } 我在尝试使用Yup创建模式以验证这些字段时遇到问题。我有: schema = Yup.object().shape({ author: Yup.object().shape({ name: Yup.string().min().max().required('...') }), author: Yup.array(

我正在使用
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: '' }]
}

我的验证对数组有效,但对名称无效。我假设问题是,我不能为对象中的两个元素都使用相同的名称,但是我不知道如何在初始值和模式中组合这两个字段。我查看了YUPAPI,发现它们有
mixed()
,但我不知道如何使用我需要的实现。这种方法是可能的,还是对这两种方法都进行验证?

作者不是数组,而是包含数组和字符串的对象。此外,您还要对其进行两次定义:

schema = Yup.object().shape({
 author: Yup.object().shape({
  name: Yup.string().min().max().required('...'),
  titles: Yup.arrayOf(Yup.string())
 }),
});
不明白为什么您有两个作者密钥。上面的模式对应于:

{
  author: {
    name: "hehyryg",
    titles: ["title", "title2"]
  }
}

我在玩弄模式顺序,这就是我留下来的原因,因为我无法找出正确的顺序