javascript - 在 React 中使用 GET 请求中的数据并在子组件中使用

标签 javascript reactjs

我正在我的 React 应用程序中发出返回团队数据的 GET 请求。我在父组件中进行此操作,然后将其传递给子 Loop 组件。 GET 请求正在工作,但当它到达 render 函数时,它是未定义的,可能是因为我的 GET 请求尚未完成。我尝试过使用 componentWillMount 但遇到了同样的问题。

有人能看出我做错的事情吗?我对 React 还很陌生。

请参阅下面我的代码。

var App = React.createClass({

    getInitialState: function() {
       return {
           teams: []
       }
    },

    componentDidMount: function() {
       $.get(url, function(data) {
           this.state.teams.push(data)
        });
    },

    render: function() {
       console.log(this.state.teams)
          return ( 
             < div >
               < Loop teams={this.state.teams} / >
             < /div>
          )
     }
});

var Loop = React.createClass({
    render: function() {
        var teamList = this.props.teams.map(function(team, index){
            return(
                <h1 key={index}>
                    {team.name}
                </h1 >
             )
        }) return <ul > {teamList} < /ul>
    }
})

最佳答案

您的方向是正确的:您收到 undefined 的原因是请求尚未完成。

那是因为您的代码使用 this.state 直接更改状态。但您的请求是异步的,因此您需要使用 setState,它仅在请求完成时更新状态:

componentDidMount: function() {
   $.get(url, function(data) {
       this.setState({
         teams: data,
       })
    }.bind(this));
}

参见the docs .

关于javascript - 在 React 中使用 GET 请求中的数据并在子组件中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40673868/

相关文章:

javascript - 如何获取存储在javascript文件输入中的文件字典?

javascript - 为什么 Node.js HTTP 服务器不响应来自 Python 的请求?

javascript - 在 react-router 中用连字符匹配路由

javascript - 如何使用 React 中的 Children 属性删除组件

javascript - 通过单击按钮更改字体颜色

javascript - Angularjs,单选按钮选择显示选择性 div(有输入)不起作用

javascript - React - 在 &lt;input type ="file"> 上手动触发 onChange 事件

mysql - React.js 将数据库(sql)中的 html 动态注入(inject)到不应用 css 样式的组件中?

node.js - 如何用 fetch api 正确替换 axios api 并映射到 nodeJS 中接收到的数据?

reactjs - 遍历 child ,找到最后一个元素