Javascript 静态方法在ES6类中未定义,reactjs中有一个修饰符
我有一个ES6课程,有一个装饰师。它有一个静态方法foo。但是,当我尝试访问静态方法时,它是未定义的Javascript 静态方法在ES6类中未定义,reactjs中有一个修饰符,javascript,reactjs,ecmascript-2016,Javascript,Reactjs,Ecmascript 2016,我有一个ES6课程,有一个装饰师。它有一个静态方法foo。但是,当我尝试访问静态方法时,它是未定义的 @withStyles(styles) class MyComponent extends Component { static foo(){ return "FOO"; } render(){ var x = MyComponent.foo; // x=undefined } } class MyComponent extend
@withStyles(styles)
class MyComponent extends Component {
static foo(){
return "FOO";
}
render(){
var x = MyComponent.foo; // x=undefined
}
}
class MyComponent extends Component {
static foo(){
return "FOO";
}
render(){
var x = MyComponent.foo; // x=foo()
}
}
当我移除decorator时,我可以访问静态方法。它不再是未定义的
@withStyles(styles)
class MyComponent extends Component {
static foo(){
return "FOO";
}
render(){
var x = MyComponent.foo; // x=undefined
}
}
class MyComponent extends Component {
static foo(){
return "FOO";
}
render(){
var x = MyComponent.foo; // x=foo()
}
}
这个问题有解决办法吗?如果您将
babel
与es6
一起使用,它可以像这样传输到es5
):
所以它的问题是
withStyles(MyComponent)
将返回另一个函数,该函数显然没有为原始类指定的静态方法。装饰器不是ES6/ES2015的一部分。这可能是您正在使用的transpiler中的一个bug(babel?)。装饰师是做什么的?您的transpiler或decorator实现似乎有缺陷。这解释了withStyles decorator的工作原理。明白了。你有时间吗?这解释了withStyles装饰器是如何工作的。@GunnerFan我不太明白这个答案是如何解决你的问题的。我和一个定制的装饰师偶然发现了完全相同的问题。你在不重写课堂的情况下解决了这个问题吗?