2015-03-17 6 views
6

मैं है एक घटक प्रतिक्रिया है कि एक className टॉगल जब घटकमैं एक में getInitialState उपयोग कब करना चाहिए प्रतिक्रिया घटक

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

यह ठीक काम करता है, लेकिन जब मैं अनुप्रयोग सर्वर साइड प्रतिपादन कर रहा हूँ, मैं क्लिक किया जाता है त्रुटि निम्नलिखित

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? 

मेरे निर्माण कदम की तरह तो

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

क्यों है सेटअप है मैं क्या गलत कर रहा हूं, और यह कैसे किया जाना चाहिए?

+1

आप सादे ES6 कक्षाएं उपयोग कर रहे हैं यही कारण है कि संदेश आता है। आपकी बिल्ड प्रक्रिया क्या कर रही है? यहां देखें: http://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html#es6-classes – zackify

+0

मैं ES6 कक्षाओं का उपयोग नहीं कर रहा हूं - मैं सवाल करूंगा मेरे निर्माण उदाहरण के साथ, लेकिन इसके कम या ज्यादा रेंडरिंग – Patrick

+0

क्या आप 'फू' निर्यात कर रहे हैं (यह आपके उदाहरण में नहीं है)। मैंने अभी स्थानीय स्तर पर एक छोटा परीक्षण प्रोजेक्ट बनाया है जो ठीक काम करता है और त्रुटि उत्पन्न नहीं करता है। मेरा डेमो ऐप प्रतिक्रिया 0.13 का उपयोग कर रहा है। आउटपुट: '

' – WiredPrairie

उत्तर

2

मुझे यकीन है कि अगर यह मदद करता है नहीं हूँ, लेकिन जबकि fluxible का उपयोग कर, इस वाक्य रचना मैं के हिस्से के रूप JSX के साथ प्रयोग किया आवश्यकता घटक

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

की कोई आवश्यकता नहीं मुझे लगता है कि यह एक समाधान की तरह लगता है? –

संबंधित मुद्दे