2016-01-20 4 views
5

私はデコレータ付きのES6クラスを持っています。それは静的メソッドfooを持っています。しかし、私が静的メソッドにアクセスしようとすると、その定義されていません。スタティックメソッドは、レスキューにデコレータを含むES6クラスでは定義されていません

@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() 
    } 
} 

この問題を回避する方法はありますか?あなたはes6babelを使用している場合、それは(es5に)そのようtranspiledすることができ

+0

デコレータはES6/ES2015の一部ではありません。これはおそらくあなたが使用しているトランスバレーターのバグです(バベル?)。 –

+0

デコレータは何をしていますか?あなたのtranspilerまたはデコレータの実装がバグのようです。 – Bergi

+0

この[SO答え](http://stackoverflow.com/questions/34766822/class-decorators-in-es7?rq=1)では、withStylesデコレータがどのように機能するかについて説明しています。 – GunnerFan

答えて

2

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; 
})(); 

だから、その問題はwithStyles(MyComponent)は明らかに、静的メソッドにあなたを持っていない別の関数を返すということです元のクラスに指定されています。

+0

入手しました。あなたの周りにこれがありますか? – GunnerFan

+0

この[SO答え](http://stackoverflow.com/questions/34766822/class-decorators-in-es7?rq=1)では、withStylesデコレータがどのように機能するかについて説明しています。 – GunnerFan

関連する問題