Как получить данные таблицы из API с помощью gatsby-ant-plugin

Я создал простую таблицу, используя таблицу ant. Я пытался получить значения из API, но получаю это исключение:

Unable to get property 'data' of undefined or null reference

мой пример кода

import React from "react"
import { Table } from 'antd';

class StudentTable extends React.Component {

  componentDidMount() {
    fetch("https://randomuser.me/api/?results=200&nat=us")
      .then(Response => Response.json())
      .then(findresponse => {
        console.info(findresponse.results);
        this.setState({
          data: findresponse.result

        });
        console.info(this.state.data);
      });
  }

  render() {
    const columns = [
      {
        title: 'Gender',
        dataIndex: 'gender',
        key: 'gender',
      }, 
      {
        title: 'Email',
        dataIndex: 'email',
        key: 'email',
      }
    ]
    const data = []
    return(
      <div>
        <h2>Student Data</h2>
        <Table 
          dataSource = {this.state.data}
          columns = {columns}/>   
        </div>
    )
  }
}

export default StudentTable
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
201
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не инициировали состояние в своем компоненте, поэтому в первом рендере this.state — это null.

Если вы используете Gatsby, вы, вероятно, можете инициализировать состояние, например

class StudentTable extends React.Component {
  state = { data: ... };
  componentDidMount() { ... }
  ...
}

или сделать это в конструкторе

class StudentTable extends React.Component {
  constructor(props) {
    super(props)
    this.state = { data: ... }
  }
  componentDidMount() { ... }
  ...
}

спасибо, я получаю данные из API, но я получаю это предупреждение ---> Предупреждение: каждая запись в таблице должна иметь уникальную опору key или установить для rowKey уникальный первичный ключ.

laxmi 12.02.2019 15:59

это конкретное требование из таблицы antd. Взгляните на документ, вы увидите, что каждый объект в массиве dataSource должен иметь свойство key.

Derek Nguyen 12.02.2019 16:23

@laxmi что вам нужно сделать, так это либо перебрать результаты вашего API, либо дать каждому объекту уникальный ключ на основе некоторых свойств этого объекта. Например, в результатах вашего API свойство login.uuid является уникальным. Вы можете использовать его как ключ для ваших данных. Или, в качестве альтернативы, сделайте set rowKey — я не знаком с antd, поэтому понятия не имею, что это такое!

Derek Nguyen 12.02.2019 18:42

Спасибо. все в порядке. Я попробую этот подход.

laxmi 13.02.2019 19:13

привет, у меня есть простой бит формы, я понятия не имел, как разделить строку таблицы и столбцы

laxmi 19.02.2019 10:02

Другие вопросы по теме