Реактор рендеринга не рендеринг моих данных из API - PullRequest
0 голосов
/ 04 июля 2018

Я создал новое приложение реагирования, используя приложение шаблонов реагирования ядра dotnet, используя dotnet new react. Затем я попытался имитировать то, что делает компонент извлечения данных, и я не могу отобразить свои динамические данные. Я удостоверился, что компонент находится в компоненте маршрутов, и что мои данные возвращаются с сервера в формате, который я ожидаю. Вот что у меня есть и что есть у компонента выборки данных для кода.

FetchData.tsx:

import * as React from 'react';
import { RouteComponentProps } from 'react-router';
import 'isomorphic-fetch';

interface FetchDataExampleState {
    forecasts: WeatherForecast[];
    loading: boolean;
}

export class FetchData extends React.Component<RouteComponentProps<{}>, FetchDataExampleState> {
    constructor() {
        super();
        this.state = { forecasts: [], loading: true };

        fetch('api/SampleData/WeatherForecasts')
            .then(response => response.json() as Promise<WeatherForecast[]>)
            .then(data => {
                this.setState({ forecasts: data, loading: false });
            });
    }

    public render() {
        let contents = this.state.loading
            ? <p><em>Loading...</em></p>
            : FetchData.renderForecastsTable(this.state.forecasts);

        return <div>
            <h1>Weather forecast</h1>
            <p>This component demonstrates fetching data from the server.</p>
            { contents }
        </div>;
    }

    private static renderForecastsTable(forecasts: WeatherForecast[]) {
        return <table className='table'>
            <thead>
                <tr>
                    <th>Date</th>
                    <th>Temp. (C)</th>
                    <th>Temp. (F)</th>
                    <th>Summary</th>
                </tr>
            </thead>
            <tbody>
            {forecasts.map(forecast =>
                <tr key={ forecast.dateFormatted }>
                    <td>{ forecast.dateFormatted }</td>
                    <td>{ forecast.temperatureC }</td>
                    <td>{ forecast.temperatureF }</td>
                    <td>{ forecast.summary }</td>
                </tr>
            )}
            </tbody>
        </table>;
    }
}

interface WeatherForecast {
    dateFormatted: string;
    temperatureC: number;
    temperatureF: number;
    summary: string;
}

и вот что у меня есть.

Bills.tsx

import * as React from 'react';
import { RouteComponentProps } from 'react-router';

interface BillState {
    bills: Bill[],
    loading: boolean
}

export class Bills extends React.Component<RouteComponentProps<{}>, BillState> 
{
    constructor()
    {
        super();

        this.state = { bills: [], loading: true };

        fetch("api/SampleData/GetBills")
            .then(response => response.json() as Promise<Bill[]>)
            .then(data => { this.setState({ 
                bills: data, 
                loading: false 
            }); 
        });
    }

    public render()
    {

        let contents = this.state.loading
            ? <p><em>Loading...</em></p>
            : Bills.renderBillsToList(this.state.bills);

        return  <div className="rendered-bills">
                    <h1>Bills to pay</h1>
                    { contents }
        </div>
    }

    public static renderBillsToList(bills: Bill[])
    {
        return  <ul>
                    {bills.map( (bill, i) => <li key={ i }> { bill.Name } </li>
                    )}
        </ul>;
    }
}

interface Bill 
{
    Name: string;
}

Что я делаю неправильно в моей таблице RenderBillsToTable? Я могу видеть рендеринг ul и li, но не мои данные, которые, я уверен, передаются.

1 Ответ

0 голосов
/ 04 июля 2018

Видимо, имя свойства было «имя», а не «имя». Похоже, эта проблема была между компьютером и стулом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...