Существует ли встроенный способ использования проптипов, чтобы гарантировать, что массив объектов, передаваемых компоненту, на самом деле является массивом объектов определенной формы?
Может как то так?
annotationRanges: PropTypes.array(PropTypes.shape({
start: PropTypes.number.isRequired,
end: PropTypes.number.isRequired,
})),
Я что-то здесь упускаю из виду? Похоже, это будет очень востребованным.
arrays
reactjs
react-proptypes
majorBummer
источник
источник
.isRequired
каждого свойстваReact.PropTypes.shape
. Я прибыл сюда, потому что я ошибочно предположил, что при использовании.isRequired
онReact.PropTypes.arrayOf
мне не нужен внутри. Чтобы добиться полной проверки покрытия, я на самом деле применил его также и непосредственноReact.PropTypes.shape
.arrayWithShape
- это [] (пустой массив). еслиarrayWithShape
это {} (объект), то это не удастся. ЕслиarrayWithShape
есть[{dumb: 'something'}]
(массив без правильных реквизитов), это не удается. Мне нужно, чтобы провалить проверку, еслиarrayWithShape
это пустой массив. Я только хочу, чтобы он прошел, если это не пустой массив с объектами, которые имеют реквизитыcolor
иfontsize
. Чего мне не хватает?Да, вам нужно использовать
PropTypes.arrayOf
вместоPropTypes.array
кода, вы можете сделать что-то вроде этого:Также для получения более подробной информации о проптипах , посетите Typechecking With PropTypes здесь
источник
[undefined]
пройдет валидациюИ вот оно ... прямо у меня под носом
От самих реагирующих документов: https://facebook.github.io/react/docs/reusable-components.html
источник
Есть краткий импорт ES6, вы можете ссылаться. Более читаемый и простой в наборе.
источник
Если я хочу определить одни и те же проптипы для определенной фигуры несколько раз, мне нравится абстрагировать их в файл проптипов, чтобы при изменении формы объекта мне приходилось изменять код только в одном месте. Это помогает немного высушить кодовую базу.
Пример:
источник
Это было мое решение для защиты от пустого массива:
источник