Est-ce que l'objet statique fonctionne avec les classes ES6 dans React?
class SomeComponent extends React.Component {
render() {
// ...
}
}
React.statics = {
someMethod: function() {
//...
}
};
Quelque chose comme ce qui précède me donne une méthode non définie someMethod
quand je fais SomeComponent.someMethod()
statics
ne fonctionne qu'avec React.createClass
. Déclarez simplement la méthode en tant que méthode de classe statique:
class SomeComponent extends React.Component {
static someMethod() {
//...
}
render() {
// ...
}
}
En ce qui concerne
React.statics = { ... }
Vous créez littéralement une propriété statics
sur l'objet React
. Cette propriété ne magiquement ne prolonge pas votre composant.
Bien que statics
ne fonctionne que pour React.createClass
, vous pouvez toujours écrire des méthodes statiques en notation ES6. Si vous utilisez ES7, vous pouvez également écrire des propriétés statiques.
Vous pouvez écrire des statistiques à l'intérieur de classes ES6 + de cette façon:
class Component extends React.Component {
static propTypes = {
...
}
static someMethod(){
}
}
Ou en dehors de la classe comme ceci:
class Component extends React.Component {
....
}
Component.propTypes = {...}
Component.someMethod = function(){....}
Si vous voulez l'écrire comme l'ancien, vous devez définir stage: 0
sur Babel (depuis son expérience).
Les statiques peuvent être consultées sans avoir à instancier un composant. Normalement, elles ne sont pas très utiles, mais il existe quelques cas particuliers. Par exemple, dans le routage lorsque vous quittez la page en cours avec ACTION PERFORM, vous pouvez demander à l'utilisateur, par le biais de méthodes statiques, de demander/s'il souhaite réellement quitter la page. Par exemple:
exampleComponent= React.createClass({
statics:{
willTransitionFrom: function(transition,component){
// check any state here or value Aasked the user.
}
}
});
Il expose les méthodes willTransitionTo et willTransitionFrom du cycle de vie. les deux sont particuliers est utile en tant que statique car vous pouvez réellement annuler une transition avant d'instancier un composant.