PropTypes.arrayOf() с shape() — это метод валидации в React, который проверяет, что массив содержит объекты с конкретной структурой. Это комбинация двух валидаторов, которая позволяет контролировать и тип данных, и поля объекта.
Используй этот паттерн, когда передаёшь массив объектов в компонент, где каждый объект должен иметь одинаковые и чётко определённые поля. Это даёт проверку типов во время выполнения и помогает ловить баги на этапе разработки.
ReactComponent.propTypes = {
arrayWithShape: React.PropTypes.arrayOf(
React.PropTypes.shape({
color: React.PropTypes.string.isRequired,
fontSize: React.PropTypes.number.isRequired
})
).isRequired
}
arrayOf() — проверяет, что проп является массивомshape() — задаёт обязательные поля и их типы для каждого объекта в массивеisRequired на поле — делает конкретное поле обязательным внутри каждого объектаisRequired на массив — делает весь проп обязательным для компонентаЕсли компонент получает данные вроде:
const data = [
{ color: 'red', fontSize: 14 },
{ color: 'blue', fontSize: 16 }
]
PropTypes проверит, что каждый объект в массиве содержит оба поля — color (строка) и fontSize (число).
В примере используется устаревший API React.PropTypes, тогда как в современных проектах на React подключают отдельный пакет prop-types с тем же синтаксисом — это лучше сказывается на оптимизации и поддержке кода.
Валидатор shape() можно использовать внутри arrayOf() для проверки того, что каждый объект в массиве содержит определённые свойства с заданными типами.
Новый — ещё не проверен сообществом
Вы