1

我需要用一些 json 数据初始化一个反应组件,但不知道如何用 material-ui 来做到这一点:

这就是我会做的反应:

var CommentList = React.createClass({
  render: function() {
    var commentNodes = this.props.data.map(function (comment) {
      return (
        <Comment author={comment.author}>
          {comment.text}
        </Comment>
      );
    });
    return (
      <div className="commentList">
        {commentNodes}
      </div>
    );
  }
});

React.render(
  <CommentBox url="comments.json" />,
  document.getElementById('content')
);

但是我现在正在使用带有material-ui和路由的单页应用程序,其中所有页面都是通过 react 加载的,但我不知道如何将 json 传递给每个单独的页面。我想通过以下方式使用它,将 comments.json 发送到我的主组件:

<Route name="root" path="/" handler={Main}>
   <Route name="home" url="comments.json" handler={Home} />
   <DefaultRoute handler={Home}/>
</Route>

有可能以某种方式实现这一目标吗?

4

1 回答 1

1

最简单的方法是使用jquery ajaxjson之类的方法加载方法:componentWillMount

var CommentList = React.createClass({
  componentWillMount: function () {
    $.get('comments.json').done(function (json) {
      this.setState({comments: json});
    }.bind(this));
  },
  render: function() {
    var commentNodes = this.state.comments.map(function (comment) {
      return (
        <Comment author={comment.author}>
          {comment.text}
        </Comment>
      );
    });
    return (
      <div className="commentList">
        {commentNodes}
      </div>
    );
  }
});

您显然可以在Main组件中进行 ajax 调用并将数据作为道具传递,但您会明白的。

于 2015-09-22T10:10:23.787 回答