Да, проверка с помощью FieldsArray, ReactJS, избыточный от - PullRequest
0 голосов
/ 27 декабря 2018

Я работаю с проверкой yup и пытаюсь построить объект условной проверки

Обычно я использую Field в избыточной форме для обработки входного значения формы и проверки его с помощью yup, но в другом случае я использую FieldArray дляреализовать сложное условие, это код, который я использую FieldArray:

 <form onSubmit={handleSubmit}>
      <FieldArray
          name="session"
          component={RenderSession}
        />
 </form>

это компонент, который я связываю в FieldsArray,

export const RenderSession = ({ fields }) => {return (
  {fields.map((member, index) => (
    <div key={index}>
      <Field
        name={`${member}.name`}
        validate={validateProps}
      />
    </div>
    <Button onClick={() => fields.push({})}>
      Add
    </Button>
  </Row>
</>

Я хочу проверить валидации значение имени поля ={$ {member} .startTime} как использовать yup Пожалуйста, дайте мне решение для использования yup с FieldsArray или чем-то еще.Если это невозможно, научите меня по-другому, Не стесняйтесь задавать вопросы, спасибо

1 Ответ

0 голосов
/ 07 января 2019

из Yup docs вы можете проверить элемент массива по его схеме, IE:

array().of(object().shape({ num: number().max(4) }))

ref: https://github.com/jquense/yup#arrayoftype-schema-schema

или более подходящий пример:

const schema = Yup.object().shape({
  friends: Yup.array()
    .of(
      Yup.object().shape({
        name: Yup.string()
          .min(4, 'too short')
          .required('Required'), // these constraints take precedence
        salary: Yup.string()
          .min(3, 'cmon')
          .required('Required'), // these constraints take precedence
      })
    )
    .required('Must have friends') // these constraints are shown if and only if inner constraints are satisfied
    .min(3, 'Minimum of 3 friends'),
});
...