Я создал простую таблицу, используя таблицу 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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы не инициировали состояние в своем компоненте, поэтому в первом рендере 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() { ... }
...
}
это конкретное требование из таблицы antd. Взгляните на документ, вы увидите, что каждый объект в массиве dataSource должен иметь свойство key.
@laxmi что вам нужно сделать, так это либо перебрать результаты вашего API, либо дать каждому объекту уникальный ключ на основе некоторых свойств этого объекта. Например, в результатах вашего API свойство login.uuid является уникальным. Вы можете использовать его как ключ для ваших данных. Или, в качестве альтернативы, сделайте set rowKey — я не знаком с antd, поэтому понятия не имею, что это такое!
Спасибо. все в порядке. Я попробую этот подход.
привет, у меня есть простой бит формы, я понятия не имел, как разделить строку таблицы и столбцы
спасибо, я получаю данные из API, но я получаю это предупреждение ---> Предупреждение: каждая запись в таблице должна иметь уникальную опору
keyили установить дляrowKeyуникальный первичный ключ.