2015-03-17 14 views
6

Mam komponent React że przełącza się className gdy składnik kliknięciuKiedy należy używać getInitialState w sposób React komponent

var Foo = React.createClass({ 
    getInitialState: function() { 
    return {className: ''} 
    }, 

    render: function(){ 
    var className = 'bar ' + this.state.className 
    return React.createElement('div', {className: className, onClick: this.onClick}) 
    }, 

    onClick: function() { 
    this.setState({className: 'baz'}) 
    } 
}); 

To działa dobrze, ale kiedy jestem renderowania po stronie serwera aplikacji, otrzymuję następujący błąd

Warning: getInitialState was defined on a component, a plain JavaScript class. 
This is only supported for classes created using React.createClass. 
Did you mean to define a state property instead? 

mój krok kompilacji jest ustawiony tak jak

var Foo = require('./Foo'); 
var factory = React.createFactory(Foo); 
module.exports = React.renderToString(factory({})); 

Dlaczego co robię źle i jak należy to zrobić?

+1

Ten komunikat pojawia się, jeśli używasz zwykłego zajęcia ES6. Jaki jest twój proces budowania? Zobacz tutaj: http://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html#es6-classes – zackify

+0

Nie używam klas ES6 - zadam pytanie z moim przykładem kompilacji, ale mniej więcej po prostu renderToString – Patrick

+0

Eksportujesz 'Foo' (nie ma go w twoim przykładzie). Właśnie stworzyłem mały projekt testowy, który działa dobrze i nie powoduje błędu. Moja aplikacja demo używa React 0.13. Wyjście: '

' – WiredPrairie

Odpowiedz

2

Nie jestem pewien, czy to pomaga, ale podczas korzystania fluxible, to jest składnia użyłem z JSX jako część wymaga komponentu

var app = new Fluxible({ 
    component: React.createFactory(require('./Components/startup.react.jsx')) 
}); 
+0

nie działa na myślę, że to wydaje się rozwiązaniem? –

Powiązane problemy