javascript - 如何在 react 中进行双json外部调用

标签 javascript json reactjs

我需要帮助。我正在构建一个小型 React Web 应用程序,它应该列出不同的 json 调用。第一个应该要求列表。对于每个条目,应该有第二个 json 调用,它提供有关每个条目的特定信息。我想将其作为 div 中的列表返回。

这是我到目前为止的代码。当前代码有效,但我无法进行第二次调用。无论我尝试什么都行不通。

谢谢。

var Dashboard = React.createClass({
getInitialState: function(){
    return {
        coinListJson: "json/coinlist.json",
        coinList: [],
        coinInfo: []
    }
},
componentDidMount: function() {

    var th = this;
    this.serverRequest = 
      axios.get(this.state.coinListJson)
        .then(function(result) {
            th.setState({
                coinList: result.data.coins
            })      
        })
  },

render: function(){
    return (
        <ul>
            {this.state.coinList.map(function(val, index){

                return (
                    <li key={ index }>{val.id}</li>
                );

              })}
        </ul>
    )   
  }
});

React.render(
  <Dashboard/>,
  document.getElementById('dashboard')
);

我试过这样的:

render: function(){
    return (
        <ul>
            {this.state.coinList.map(function(val, index){



                    var th = this;
                    var url = "https://api.coinmarketcap.com/v1/ticker/"+val.id+"/?convert=EUR";
                    this.serverRequest = 
                    axios.get(url)
                        .then(function(result) {
                            return (                     
                              <li key={ index }>{val.id}{result.data.coins[0].price_btc}</li>
                            );


                        })


              })}
        </ul>
    )   
  }

最佳答案

我相信您需要以如下方式将您的第二次调用(调用)移动到 componentDidMount:

componentDidMount: function() {
  var th = this;
  var coins; 
  axios.get(this.state.coinListJson)
    .then(function(result) {
       coins = result.data.coins;
       return Promise.all(coins.map(function(val){
         var url = "https://api.coinmarketcap.com/v1/ticker/"+val.id+"/?convert=EUR";
         return axios.get(url);
       });
     })
     .then(function(result) {
        // process the result, change state accordingly
        th.setState({
            coinList: coins
            // subResult: result
        }) 
      });
}

关于javascript - 如何在 react 中进行双json外部调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48265249/

相关文章:

javascript - 在 jQuery 中使用 .append 提交值 $_POST 变量包含火狐中的数据。但在 chrome 上 $_POST 变量为空

javascript - 刷新同一页面而不重新加载 - Reactjs

ReactJS如何循环动态命名的引用

jquery - 如何自定义 jquery 自动完成以在 DIV 中显示

JavaScript 项目从数组中消失

javascript - 如何在 Chrome 调试器中检查 JavaScript 函数返回值?

python - datetime.date(2014, 4, 25) 在 Django 中不是 JSON 可序列化的

javascript - 通过 Ajax 调用将 JSON 传递给 WCF

javascript - JSON 请求不起作用 : Cross origin request not supported on file://URL

reactjs - 我应该在 React 和 Redux 中将数据模型保存在哪里?