Je regarde les codes redux todomvc . Quel est le mot clé static
dans static propTypes
? Merci
[~ # ~] mise à jour [~ # ~]
Aucune idée pourquoi a voté contre? Ce post est-il trop simple? Les commentaires sont les bienvenus. Merci. J'espère pouvoir supprimer ce post.
static
ne faisait pas partie de la dernière génération de Javascript ("ES5"), c'est pourquoi vous ne le trouverez pas dans les anciennes documentations. Cependant, elle et le reste de la syntaxe de classe "ES6" sont désormais pris en charge dans tous les principaux navigateurs à l'exception d'Internet Explorer ( http://caniuse.com/#search=es6 ), et si vous utilisez un transpiler comme Babel vous pouvez l'utiliser dans n'importe quel navigateur. La plupart des utilisateurs de React utilisent déjà Babel pour transpiler leur JSX, donc React sites (comme Redux TodoMVC) le tiennent pour acquis. Vous pouvez en savoir plus sur static
ici https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static .
Dans le cas de static propTypes
, les propTypes doivent être déclarés sur la classe elle-même, pas sur l'instance de la classe. En d'autres termes, si vous utilisez des composants sans état:
function Foo() {
this.PropTypes = somePropTypes; // bad
return <div></div>;
}
Foo.PropTypes = somePropTypes; // good
Lorsque vous utilisez des classes ES6, l'équivalent de Foo.PropTypes = somePropTypes
est:
class Foo extends React.Component {
static PropTypes = somePropTypes;
}
En remarque, la possibilité de définir des propriétés dans une classe comme celle-ci n'existe pas (encore) dans aucun navigateur: vous avez besoin d'un transpilateur tel que Babel avec le transform-class-properties
brancher.
propTypes
ne sont pas uniques à une instance du composant. Ils ne changent pas non plus par composant. Par conséquent, il est logique pour eux d'être un membre statique de la classe.