在Reactjs中进行ajax调用,在呈现

时间:2016-07-12 10:24:23

标签: reactjs

我是React.js的新手,并尝试使用react从ajax调用渲染结果,但数据不会进入render()函数。如果您知道任何其他解决此问题的最佳方法或在反应中进行ajax调用,请提及相同的链接。需要在API中呈现数据.Below是相同的javascript。该值来自componentDidMount方法,结果具有该值。但是当我尝试在渲染中访问时,它就是空的。我试图将值赋给全局对象数组,但这也无效。任何解决方案。在帖子中提到的用于获取数据的链接是一个工作链接。您可以在浏览器中调用该链接并检查json字段。

var UserGist = React.createClass({
  getInitialState: function() {
    return {
      username: '',
      lastGistUrl: ''
    };
  },

  componentDidMount: function() {
    this.serverRequest = $.get(this.props.source, function(result) {
      this.setState({
        username = result.description,
          lastGistUrl = result.html_url
      })
    }.bind(this));
  },

  componentWillUnmount: function() {
    this.serverRequest.abort();
  },

  render: function() {
    React.createElement("div", null, this.state.username, " 's last gist's url  is ",
      React.createElement("div", null, this.state.lastGistUrl, ""), ".")

  }
});



ReactDOM.render(React.createElement(UserGist, { source: "https://api.github.com/users/octocat/gists" }), document.getElementById('container'));

Fiddler link

1 个答案:

答案 0 :(得分:2)

您的代码包含语法错误。将 <ScrollView android:id="@+id/scroll" android:layout_width="wrap_content" android:layout_below="@+id/toolbar" android:layout_height="wrap_content" android:fillViewport="true" android:layout_above="@+id/makeOffer"> 替换为=

:

即将发生更多错误:

  • componentDidMount: function() { this.serverRequest = $.get(this.props.source, function(result) { this.setState({ username: result.description, lastGistUrl: result.html_url }) }.bind(this)); }, 缺少退货声明。应该是render
  • return React.createElement是一个数组而不是一个对象。你需要以某种方式处理这个问题。例如,选择第一个元素result
  • result = result[0]是方法。你应该打电话给它而不是作业setState应该是setState=({})这个是演示代码。

见固定demo