Невозможно отобразить данные API на React.js - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь отобразить данные из локального API на веб-интерфейсе React.js.

Он отображает пустую таблицу только с заголовками таблицы, но без записей в таблице.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 голосов
/ 05 июня 2018

вам нужно setState, чтобы уведомить React о том, что вы хотите что-то визуализировать.Во-вторых, вы должны обязательно использовать неизменяемые структуры данных.push или unshift не уведомлять о каких-либо изменениях.

for (let i in body) {
    this.setState({
        cards: [
            ...this.state.cards,
            body[i]
        ]
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...