Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 静态方法在ES6类中未定义,reactjs中有一个修饰符_Javascript_Reactjs_Ecmascript 2016 - Fatal编程技术网

Javascript 静态方法在ES6类中未定义,reactjs中有一个修饰符

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

我有一个ES6课程,有一个装饰师。它有一个静态方法foo。但是,当我尝试访问静态方法时,它是未定义的

@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我不太明白这个答案是如何解决你的问题的。我和一个定制的装饰师偶然发现了完全相同的问题。你在不重写课堂的情况下解决了这个问题吗?