Форма PropTypes требуется, если prop поставляется

#reactjs #react-proptypes

#reactjs #react-proptypes

Вопрос:

Я пытаюсь выполнить сложную проверку с использованием PropTypes, и мне не очень повезло в ее понимании.

Текущие PropTypes:

 Map.propTypes = {
  locations: PropTypes.arrayOf(
    PropTypes.shape({
      latitude: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
        .isRequired,
      longitude: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
        .isRequired
    })
  )
}
  

Что происходит:

Если locations prop не предоставляется, широта и долгота по-прежнему помечаются как требуемые. Я думаю, этого следовало ожидать.

Чего бы я хотел:

Мне бы хотелось, чтобы широта и долгота требовались только в том случае, если была указана locations prop.

Я пытался выполнить пользовательскую функцию для locations prop, но поскольку у нее сложная проверка ( arrayOf , shape и oneOfType ), я не хотел переопределять эти методы самостоятельно.