React / Rails - 未调用getInitialState

时间:2015-09-26 14:32:11

标签: ruby-on-rails ruby-on-rails-4 reactjs

我正在关注this intro to React guide以及原始fb react tutorial,使用Rails作为后端。我已经拆分了我的文件,它们一起正常工作到this point

在尝试设置getInitialState为我的CommentBox提供道具时,我收到Cannot read property 'map' of undefined的错误,这意味着React无法找到空的数组[]据称设定并发送给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中。谢谢!

编辑:评论列表代码:

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

1 个答案:

答案 0 :(得分:0)

想出来。基本上:

  • 我试图传递一个data道具,因为它是一个而不存在。
  • 在呈现CommentList后,它变为prop,并且可以从那里访问它。

学习了。