2015-03-17 14 views
6

Tôi đã là một thành phần Phản ứng mà Toggles một className khi các thành phần được nhấpKhi nào tôi nên sử dụng getInitialState trong một Phản ứng thành phần

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

Nó hoạt động tốt, nhưng khi tôi render phía máy chủ ứng dụng, tôi nhận được sau lỗi

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? 

xây dựng của tôi bước được thiết lập như vậy

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

Tại sao những gì tôi đang làm sai, và làm thế nào nó nên được thực hiện?

+1

Thông điệp đó đi lên nếu bạn đang sử dụng các lớp học ES6 đồng bằng. Quá trình xây dựng của bạn đang làm gì? Xem tại đây: http://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html#es6-classes – zackify

+0

Tôi không sử dụng các lớp ES6 - tôi sẽ đặt câu hỏi với ví dụ xây dựng của tôi, nhưng nhiều hơn hoặc ít hơn của nó chỉ renderToString – Patrick

+0

Bạn đang xuất 'Foo' (nó không có trong ví dụ của bạn). Tôi vừa tạo một dự án thử nghiệm nhỏ cục bộ hoạt động tốt và không tạo ra lỗi. Ứng dụng demo của tôi đang sử dụng React 0.13. Đầu ra: '

' – WiredPrairie

Trả lời

2

Tôi không chắc chắn nếu điều này sẽ giúp, nhưng khi sử dụng fluxible, đây là cú pháp tôi sử dụng với JSX như một phần của yêu cầu phần

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

nó không làm việc cho tôi mặc dù nó có vẻ giống như một giải pháp? –

Các vấn đề liên quan