Existe-t-il un moyen intégré d'utiliser des proptypes pour garantir qu'un tableau d'objets transmis à un composant est en réalité un tableau d'objets d'une forme spécifique?
Peut-être quelque chose comme ça?
annotationRanges: PropTypes.array(PropTypes.shape({
start: PropTypes.number.isRequired,
end: PropTypes.number.isRequired,
})),
Suis-je en train de manquer quelque chose de super évident ici? On dirait que ce serait très recherché.
arrays
reactjs
react-proptypes
majorBummer
la source
la source
.isRequired
sur chaque propriété deReact.PropTypes.shape
. Je suis arrivé ici parce que je suppose à tort que l'utilisation.isRequired
surReact.PropTypes.arrayOf
, je ne l' ai pas besoin à l' intérieur. Pour obtenir une validation complète de la couverture, j'ai fini par l'appliquer directementReact.PropTypes.shape
.arrayWithShape
est [] (un tableau vide), il n'échoue pas. siarrayWithShape
est {} (un objet), il échoue. SiarrayWithShape
est[{dumb: 'something'}]
(un tableau sans les bons accessoires), il échoue. J'en ai besoin pour échouer la validation s'ilarrayWithShape
s'agit d'un tableau vide. Je veux seulement qu'il passe si c'est un tableau non vide avec des objets qui ont des accessoirescolor
etfontsize
. Qu'est-ce que je rate?Oui, vous devez utiliser
PropTypes.arrayOf
au lieu dePropTypes.array
dans le code, vous pouvez faire quelque chose comme ceci:Aussi pour plus de détails sur les proptypes , visitez Typechecking With PropTypes ici
la source
[undefined]
passerait la validationEt voilà ... juste sous mon nez:
Depuis les documents Reaper eux-mêmes: https://facebook.github.io/react/docs/reusable-components.html
la source
Il y a une importation abrégée ES6, vous pouvez faire référence. Plus lisible et facile à taper.
la source
Si je dois définir plusieurs fois les mêmes proptypes pour une forme particulière, j'aime les résumer dans un fichier proptypes de sorte que si la forme de l'objet change, je n'ai qu'à changer le code au même endroit. Cela aide à assécher un peu la base de code.
Exemple:
la source
C'était aussi ma solution pour me protéger contre un tableau vide:
la source