如何将 React.createClass 移植到 ES6



我曾经说过

var HomePage = React.createClass({
    getInitialState: function() {  
        var stocks = {};
    ...
feed.onChange(function(stock) {            
            stocks[stock.symbol] = stock;
            this.setState({stocks: stocks, bid: stock, ask: stock, last: stock, type: stock, undsymbol: stock});
        }.bind(this));
        return {
            stocks: stocks
        };
    },  
    componentDidMount() {              
        var props = this.props;
    },
    ...
},

但是ES6中没有getInitialState。但是将语句放在constructor中的何处:

return {
                stocks: stocks
       };

它抱怨没有render功能。

class HomePage extends React.Component {
    constructor(props) {
        super(props);
    // Can't do this here
    //  return {
    //       stocks: stocks
    //  };
}

当我执行this.state.stocks[stock.symbol]时,我得到

app.js:555 Uncaught TypeError: Cannot set property 'JNJ' of undefined
    at n.feed.onChange (<anonymous>:555:45)

componentDidMount() {              
        //var props = this.props;
         feed.onChange((stock) => {            
            this.state.stocks[stock.symbol] =

对如何(放在哪里(return {stocks:stocks}感到困惑

您只需显式设置组件的 state 属性:

this.state = {
    stocks: stocks
};

在构造函数中。

最新更新