无法在React.js上显示API数据

时间:2018-06-04 21:43:16

标签: sql reactjs api fetch

我正在尝试在React.js前端显示来自本地API的数据。

它显示的是一个只包含表头的空白表,但表中没有条目。 JSON来自API,就像我在console.log(this.state.cards)中一样,它在命令行上记录数组。

感谢任何帮助!

谢谢!

import React, { Component } from 'react';
import '../css/card.css';
import Card from './Card';
import CardTable from './CardTable.js';
import request from 'request';

class TopCards extends Component {

    constructor() {
        super();
        this.state = {
          cards: [],
        };
      }

    componentDidMount() {
        const url = "http://localhost:1200";
        request({
            url: url,
            json: true
        }, (error, response, body) => {
            if (!error && response.statusCode === 200) {
                for (let i in body) {
                    this.state.cards.push(body[i]);
                }
            }
        })
    }

    render() {


        if(this.state.cards) {
            var cardList = this.state.cards.map(function(card){
                return(
                    <CardTable key={card.cardName} card={card} />
                );
            });
        }

        return (
            <div className="TopCards">
                <h1>Top Cards This Week:</h1>
                <br />
                <table width="400">
                <tr>
                        <th>Name</th>
                        <th>Count</th>
                        <th>Wins</th>
                        <th>Losses</th>
                        <th>Win %</th>
                </tr>
                    {cardList}
                </table>
            </div>
        )
    }
}

export default TopCards;

1 个答案:

答案 0 :(得分:1)

您需要setState通知React您要呈现某些内容的事实。其次,您应该确保使用不可变数据结构。 pushunshift不会通知任何变更。

for (let i in body) {
    this.setState({
        cards: [
            ...this.state.cards,
            body[i]
        ]
    });
}