2015-09-26 48 views
0

我跟在this intro to React guide以及原始fb react tutorial,使用Rails作爲後端。我已將文件拆分出來,並且它們一起正常工作到this pointReact/Rails - getInitialState不叫

在嘗試設置getInitialState爲我CommentBox提供的道具,我得到的Cannot read property 'map' of undefined錯誤,這意味着陣營找不到空數組[]是據稱設定,並送到CommentList。我如何確保getInitialState實際上設置了data道具?

var CommentBox = React.createClass({ 
    getInitialState: function(){ 
    return {data: []}; 
    }, 
    render: function(){ 
    return(
     <div className="commentBox"> 
     <h1> Comments! </h1> 
     <CommentList data={this.props.data} /> 
     <CommentForm /> 
     </div> 
    ); 
    } 
}); 

var ready = function(){ 
    React.render(
    <CommentBox />, 
    document.getElementById('content') 
); 
}; 

$(document).ready(ready); 

然後整個代碼託管在this repo。謝謝!

編輯:CommentList代碼:

var CommentList = React.createClass({ 
    commentNodes: function(){ 
    var nodes = this.props.data.map(function(d){ 
     return(
     <Comment author={d.author}> 
      {d.text} 
     </Comment> 
    ); 
    }); 
    return nodes; 
    }, 

    render: function(){ 
    return(
     <div className="commentList"> 
     This is the comment list. 
     {this.commentNodes()} 
     </div> 
    ); 
    } 
}); 

回答

0

想通了。本質:

  • 我試圖在data道具來傳遞,它不存在,因爲它是一個狀態
  • 在呈現CommentList後,它變成prop,並且可以從那裏訪問它。

學習了。

+0

僅供參考,您應該將自己的答案標記爲已接受,以便其他人可以看到此問題已得到解答:) –

+0

謝謝!將在20小時內完成。 :) –

+0

哈哈,在過去的幾年裏我一直不那麼活躍,我忘記了這個規則。 –