Ich habe eine ES6-Klasse mit einem Dekorator. Es hat eine statische Methode foo. Wenn ich jedoch versuche, auf die statische Methode zuzugreifen, ist sie undefiniert.Statische Methode ist nicht definiert in ES6-Klassen mit einem Dekorator in reactjs
@withStyles(styles)
class MyComponent extends Component {
static foo(){
return "FOO";
}
render(){
var x = MyComponent.foo; // x=undefined
}
}
Wenn ich den Dekorateur entferne, kann ich auf die statische Methode zugreifen. Es ist nicht mehr undefiniert.
class MyComponent extends Component {
static foo(){
return "FOO";
}
render(){
var x = MyComponent.foo; // x=foo()
}
}
Gibt es eine Problemumgehung für dieses Problem?
var MyComponent = (function() {
function MyComponent() {
_classCallCheck(this, _MyComponent);
}
_createClass(MyComponent, null, [{
key: 'foo',
value: function foo() {
return "FOO";
}
}]);
var _MyComponent = MyComponent;
Foo = withStyles(MyComponent) || MyComponent;
return MyComponent;
})();
So sein Problem ist, dass withStyles(MyComponent)
eine andere Funktion zurück, die offensichtlich nicht statische Methoden hat:
Dekorierer sind nicht Teil von ES6/ES2015. Dies ist wahrscheinlich ein Fehler im verwendeten transpiler (babel?). –
Was macht der Dekorateur? Entweder scheint dein Transpiler oder die Decorator-Implementierung fehlerhaft zu sein. – Bergi
Diese [SO Antwort] (http://stackoverflow.com/questions/34766822/class-decorators-in-es-7?rq=1) erklärt, wie der withStyles Decorator funktioniert. – GunnerFan