Quelqu'un peut-il expliquer comment Babel dans React prend en charge les fonctions de flèche épaisse en tant que propriétés de classe? Utilisation de Babel Essayez-le Je vois qu'elles ne sont pas prises en charge:
class Question {
// Property (not supported)
myProp = () => {
return 'Hello, world!';
}
// Method (supported)
myFunc() {
return 'Hello, world!';
}
}
Les propriétés de classe ne sont pas prises en charge dans ES6 (corrigez-moi si je me trompe), mais ensuite dans React (avec Babel), elles fonctionnent.
Je peux voir la différence entre les méthodes et les propriétés utilisant TypeScript Playground mais je ne comprends pas clairement si Babel les prend en charge ou non. Existe-t-il un plug-in?
METTRE À JOUR:
Je peux voir qu'ils sont supportés avec "babel-preset-stage-0"
.
Pour prendre en charge les propriétés de classe, vous devez installer et ajouter babel-plugin-transform-class-properties
au paramètre plugins
de votre .babelrc
(ou dans votre configuration webpack
.).
Notez que ce plugin est également inclus dans
Donc, si vous en utilisez un, vous n'avez pas besoin d'installer babel-plugin-transform-class-properties
par vous-même.
Comme @illiteratewriter, les propriétés de classe suggérées sont prises en charge à partir de Stage 0 preset . Pour le moment, ils sont supportés jusqu'à Stage 2 preset :
La proposition doit désormais avoir en plus une description formelle de la syntaxe et de la sémantique de la fonctionnalité (en utilisant le langage formel de la spécification ECMAScript). La description doit être aussi complète que possible, mais peut contenir des tâches et des espaces réservés. Deux implémentations expérimentales de la fonctionnalité sont nécessaires, mais l'une d'entre elles peut être dans un transpiler tel que Babel.