Типы свойств React и дочерние свойства

#reactjs #react-proptypes

#reactjs #react-proptypes

Вопрос:

Итак, у меня есть созданный мной универсальный модальный компонент. Этот модал может иметь или не иметь форму, в зависимости от того, предоставлено ли свойство «form». Мое намерение, используя проверку PropTypes, состоит в том, чтобы имя формы было обязательным, ЕСЛИ предоставлено свойство form. Это мой код PropTypes:

 form: PropTypes.shape({
  name: PropTypes.string.isRequired,
  handleSubmit: PropTypes.func,
  initialValues: PropTypes.object
}),
  

Итак, это работает для обеспечения соблюдения требования о наличии имени при использовании свойства «форма». Однако, когда свойство «form» не предоставлено, я получаю предупреждение в консоли о том, что в нем отсутствуют требуемые form.name свойство.

Я хочу, чтобы это было там, где «форма» является необязательной, но если указана «форма», требуется «имя». Есть ли какой-либо способ сделать это?

Комментарии:

1. Это должно работать так, как вы ожидаете. Я предполагаю, что вы передаете пустой объект для form , а не null нет? Вот почему вы получаете предупреждение. Может быть, даже в defaultProps ?

2. Вы можете создать пользовательский propType, как описано в документации к customProp примеру .