Reactjs API 请求问题

Posted

技术标签:

【中文标题】Reactjs API 请求问题【英文标题】:Reactjs API Request Issue 【发布时间】:2019-11-06 03:15:54 【问题描述】:

我正在尝试从 GameSpot API 获取一些数据并显示它。我可以在控制台中看到这些数据,但在我的网页上看不到它。

import React,  Component  from 'react';
import axios from 'axios';


class Games extends Component 
    constructor()
        super();
        this.state=
          games: [],
        
    

    componentDidMount() 
        axios.get(`http://www.gamespot.com/api/games/?api_key=[APIKEY]&format=json&filter=name:Cyberpunk 2077,limit:10`)          
            .then(res => 
                this.setState(
                    games: res.data
                )
            )
            .catch(error=>
                console.log(error);
            )


    
    render() 
        const games = this.state;
        console.log(games);

        return (
            <div>
              <p>games.name</p>
            </div>

        );
    

我希望在我的网页上看到结果数据

编辑: console.log 给出:

【问题讨论】:

能否请您显示控制台数据? i.stack.imgur.com/uxMdf.png 好的,那么我认为你需要这样做:

games.results[0].name

它没有用。我收到此错误“TypeError: Cannot read property 'results' of undefined” 【参考方案1】:

您错误地映射了元素。

render函数里面试试这个:

const results = this.state.games;
let names =[];
if(results && results.length) 
  results.forEach(result=> 
    names.push(<p>result.name</p>);
  );

return (
  <div>
    names
  </div>
);

编辑:当状态为空时,我必须处理这种情况。

希望对您有所帮助。干杯!!

【讨论】:

在这一行

result.name

我在第一次回答后编辑了几次答案。你试过最后一个吗? 我已经尝试了最后一个,我得到了这个错误“TypeError: Cannot read property 'forEach' of undefined” 哦!我得到了它。等待【参考方案2】:

你需要iterate over the object点赞,

Object.keys(games.name).forEach(function(key) 
    <p>games.name[key]</p>
);

【讨论】:

怎么知道数据是不是对象? @AdityaSrivast 作为 OP 尝试使用 games.name 访问数据,我想我们只对对象使用点(。)运算符。

以上是关于Reactjs API 请求问题的主要内容,如果未能解决你的问题,请参考以下文章

使用参数 ReactJS 从 API 请求中获取信息

如何在 reactjs 中向 nodejs RESTful API 发出 POST 请求

如何调试来自 ReactJs(另一个项目)客户端的 Laravel API 请求?

如何从 Reactjs 调用本地化 API?

无法从 reactjs 中的 axios 向 id=1 文章的 django REST API 后端发出 GET 请求

使用自定义标头 ReactJS 获取 GET 请求