2016-01-20 20 views
5

Mam klasę ES6 z dekoratorem. Ma statyczną metodę foo. Jednak gdy próbuję uzyskać dostęp do metody statycznej, jej niezdefiniowane.Metoda statyczna jest niezdefiniowana w klasach ES6 z dekoratorem w reactjs

@withStyles(styles) 
class MyComponent extends Component { 
    static foo(){ 
     return "FOO"; 
    } 
    render(){ 
     var x = MyComponent.foo; // x=undefined 
    } 
} 

Po usunięciu dekoratora mogę uzyskać dostęp do metody statycznej. Nie jest już nieokreślony.

class MyComponent extends Component { 
    static foo(){ 
     return "FOO"; 
    } 
    render(){ 
     var x = MyComponent.foo; // x=foo() 
    } 
} 

Czy istnieje obejście tego problemu?

+0

Dekoratory nie są częścią ES6/ES2015. To prawdopodobnie błąd w używanym transpilerze (babel?). –

+0

Co robi dekorator? Albo Twój transpiler lub implementacja dekoratora wydaje się być błędna. – Bergi

+0

To [odpowiedź SO] (http://stackoverflow.com/questions/34766822/class-decorators-in-es7?rq=1) wyjaśnia, w jaki sposób działa dekorator withStyles. – GunnerFan

Odpowiedz

2

Jeśli używasz babel z es6, może to być transpiled tak (do es5):

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

więc jego problemem jest to, że withStyles(MyComponent) powróci inną funkcję, która oczywiście nie ma metody statyczne ty określone dla oryginalnej klasy.

+0

Mam to. Czy masz to w pobliżu? – GunnerFan

+0

To [odpowiedź SO] (http://stackoverflow.com/questions/34766822/class-decorators-in-es7?rq=1) wyjaśnia, w jaki sposób działa dekorator withStyles. – GunnerFan

Powiązane problemy