56 votes

react : pourquoi les propTypes statiques

Je regarde le codes redux todomvc . Quel est le static mot-clé dans static propTypes ? Merci

UPDATE

Aucune idée de la raison pour laquelle il a été rétrogradé ? Ce message est-il trop simple ? Les commentaires sont les bienvenus. Merci. J'espère pouvoir supprimer ce message.

11 votes

"J'espère que je peux supprimer ce post." Tu n'as pas besoin de le faire. L'impact sur votre score de trois votes négatifs est négligeable, et ce n'est pas parce que trois personnes n'ont pas aimé votre question que d'autres personnes ne trouveront pas cette question utile. Toute personne qui utilise SO depuis un certain temps a au moins une question qu'elle est un peu gênée de poser (moi y compris), mais le but de cet endroit est d'aider les gens à apprendre, et même les "mauvaises" questions peuvent le faire.

0 votes

@machineghost Merci. En fait, j'ai lu quelques documents sur le javascript. Je n'ai pas trouvé static propriété. Peut-être n'ai-je pas lu les documents attentivement. Bien sûr, static est très souvent dans d'autres langues.

40voto

machineghost Points 9864

static ne faisait pas partie de la dernière génération de Javascript ("ES5"), c'est pourquoi vous ne la trouverez pas dans les anciennes documentations. Toutefois, cette syntaxe, ainsi que le reste de la syntaxe de classe "ES6", est désormais prise en charge par tous les principaux navigateurs, à l'exception d'Internet Explorer ( http://caniuse.com/#search=es6 ), et si vous utilisez un transpilateur 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, de sorte que les sites React (comme Redux TodoMVC) le prennent pour acquis. Vous pouvez en savoir plus sur static aquí https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static .

Dans le cas de static propTypes En effet, les propTypes doivent être déclarés sur la classe elle-même, et non 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;
}

À titre d'information, la possibilité de définir des propriétés dans une classe comme celle-ci n'existe pas (encore) dans les navigateurs : il faut un transpilateur tel que Babel avec la fonction transform-class-properties plugin.

15voto

Justin Niessner Points 144953

propTypes ne sont pas uniques à une instance du composant. Ils ne changent pas non plus par composant. Il est donc logique qu'ils soient un membre statique de la classe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X