Réagir proptype de la matrice de la forme de la
Est-il un moyen intégré pour utilisation proptypes pour s'assurer qu'un tableau d'objets passés à un composant est en fait un tableau d'objets de forme spécifique?
Peut-être quelque chose comme ça?
annotationRanges: PropTypes.array(PropTypes.shape({
start: PropTypes.number.isRequired,
end: PropTypes.number.isRequired,
})),
Ai-je raté quelque chose de super évident ici? Semble que ce serait très recherché.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
React.PropTypes.shape()
comme un argument deReact.PropTypes.arrayOf()
:Voir le Prop Validation section de la documentation.
Mise à JOUR
De
react v15.5
, à l'aide deReact.PropTypes
est obsolète et le package autonomeprop-types
devrait être utilisée à la place :.isRequired
sur chaque propriété deReact.PropTypes.shape
. Je suis arrivé ici parce que j'ai à tort que, par l'utilisation.isRequired
surReact.PropTypes.arrayOf
, je n'ai pas besoin de l'intérieur. Pour atteindre une couverture complète de la validation, de fait, j'ai fini en l'appliquant directement àReact.PropTypes.shape
ainsi.arrayWithShape
est [] (un tableau vide) Elle n'échoue pas. siarrayWithShape
est {} (un objet), il échoue. SiarrayWithShape
est[{dumb: 'something'}]
(un tableau sans le corriger accessoires), il échoue. J'en ai besoin pour la validation échoue siarrayWithShape
est un tableau vide. Je veux seulement que ça passe si c'est un tableau vide avec des objets qui ont des hélicescolor
etfontsize
. Ce qui me manque?Oui, vous avez besoin d'utiliser
PropTypes.arrayOf
au lieu dePropTypes.array
dans le code, vous pouvez faire quelque chose comme ceci:Aussi pour plus de détails sur proptypes, visite le Typage Avec PropTypes ici
Et il est là... juste sous mon nez:
De l'réagissent docs eux-mêmes: https://facebook.github.io/react/docs/reusable-components.html
Il y a un ES6 abréviation de l'importation, vous pouvez référencer. Plus lisible et facile à saisir.
Si je suis pour définir la même proptypes pour une forme donnée plusieurs fois, j'aime abstraite à une proptypes fichier, de sorte que si la forme de l'objet change, je n'ai qu'à changer le code en un seul endroit. Il permet de sécher de la base de code un peu.
Exemple:
C'était ma solution pour se protéger contre un tableau vide ainsi: