2016-11-21 2 views
3

J'ai un accessoire sur un composant ReactJS qui est nul ou une carte immuable.Comment spécifier un type de prop nul dans ReactJS?

Au fond de mon widget de si j'écris:

MyComponent.propTypes = { 
    myMap: React.PropTypes.instanceOf(Immutable.Map) 
}; 

Je laisse cette ouverture à la possibilité d'être nulle, non définie, ou une carte.

Comment puis-je rendre cela obligatoire et de type null ou mappage uniquement?

https://facebook.github.io/react/docs/typechecking-with-proptypes.html

Je vois cet exemple, mais je ne sais pas comment adapter la syntaxe à mes besoins ou s'il est même possible.

Édition: Si une propriété est NULL, elle est toujours présente mais indéfinie signifie qu'elle n'a pas été entièrement incluse.

Par exemple:

<Component id={1} data={null} /> 
<Component id={2} data={Immutable.Map()} /> 
<Component id={3} /> 
+0

Quelle est la différence que vous voyez dans une propriété qui n'est pas là ou qui est nulle? – mfirry

Répondre

2

Cette exigence semble être non pris en charge avec la version actuelle de React. Pour plus de détails, référez-vous à React issue #2166 pour obtenir plus de détails. Ce problème traite de la possibilité d'une propriété isRequiredOrNull en plus de isRequired. Bottom line:

Je ne m'attendrais pas à ce que d'autres changements soient apportés aux PropTypes. Flow est devenu beaucoup plus mature récemment, et d'après ce que j'ai entendu de l'équipe de React, c'est la solution à plus long terme à la vérification de type. Cela place PropTypes dans le même compartiment de "compatibilité" en termes de priorités - comme addcon createClass ou React, ils sont toujours supportés, mais seulement avec des corrections de bugs et des améliorations de performances, sans ajouter de nouvelles fonctionnalités ou changer l'API.

En d'autres termes, si vous avez besoin type plus sophistiqué contrôle, utilisez Flow à la place.