J'ai créé deux modèles State et City dans des fichiers séparés. Ville importatrice dans l'État.
État peut avoir un tableau de villes à l'intérieur.
Le code ci-dessous fonctionne bien.
State.js
let State = PropTypes.shape({
name: React.PropTypes.string,
cities: PropTypes.arrayOf(PropTypes.shape(City))
});
City.js
let City = PropTypes.shape({
name: React.PropTypes.string,
population: PropTypes.number
});
Cependant, quand je réécris la cities
comme
let State = PropTypes.shape({
name: React.PropTypes.string,
cities: PropTypes.arrayOf(City)
});
cela me donne un avertissement.
Résumé :
cities: PropTypes.arrayOf(PropTypes.shape(City))
fonctionne.
cities: PropTypes.arrayOf(City)
not.
Cela me donne l'avertissement suivant:
Warning: Failed propType: Property xx of component Xx has invalid PropType notation inside arrayOf. Check the render method of Yy.
Ma question est, City
est un Proptypes.shape
, alors pourquoi dois-je mentionner Proptypes.shape(City)
dans Proptypes.arrayOf
?
Dans votre code:
let City = PropTypes.shape({
name: React.PropTypes.string,
population: PropTypes.number
});
Quelle version de React utilisez-vous? Vous faites référence à PropTypes de React.PropTypes et PropTypes. Comment importez-vous les PropTypes? Utilisez-vous le paquet prop-types?
J'utilise un scénario similaire et cela fonctionne pour moi. À quoi ressemble votre rendu et quelles sont les données fournies pour l'accessoire?
Pour moi, ce qui suit fonctionne absolument:
cities: PropTypes.arrayOf(City)
J'ai le même problème, et dans mon cas, c'est parce qu'un fichier a été chargé avant l'autre.
Dans votre cas, cela pourrait être parce que City.js
n'est pas encore chargé lorsque vous chargez State.js