【发布时间】:2018-05-23 21:16:50
【问题描述】:
我有一些带有 json 的 URL,需要读取数据。 为了这个例子,json看起来像这样:
{
"results": [
...
],
"info": {
...
}
}
我想将获取的数据作为组件的属性返回。 最好的方法是什么? 我试图用 axios 做到这一点。我设法获取数据,但是在 render() 方法中的 setState 之后,我收到了一个空对象。这是代码:
export default class MainPage extends React.Component {
constructor(props: any) {
super(props);
this.state = {
list: {},
};
}
public componentWillMount() {
axios.get(someURL)
.then( (response) => {
this.setState({list: response.data});
})
.catch( (error) => {
console.log("FAILED", error);
});
}
public render(): JSX.Element {
const {list}: any = this.state;
const data: IScheduler = list;
console.log(data); // empty state object
return (
<div className="main-page-container">
<MyTable data={data}/> // cannot return data
</div>
);
}
}
我不知道为什么在 render() 方法中数据消失了。如果我把
console.log(response.data);
在 .then 部分,我得到状态为 200 的数据。
所以我现在问是否有其他方法可以做到这一点。 如果有任何帮助,我将不胜感激。
----更新---- 在 MyTable 组件中,之后出现错误:
const flightIndex: number
= data.results.findIndex((f) => f.name === result);
错误是:
Uncaught TypeError: Cannot read property 'findIndex' of undefined
这里有什么问题?如何判断 react 这不是属性?
【问题讨论】:
-
代码对我来说似乎很好 -- 你确定
someURL没有返回一个空对象吗? -
是的,我确定。
-
好的。我面临另一个问题。在组件“MyTable”中,当我使用 data.results.findIndex(...) 时,出现错误:“Uncaught TypeError: Cannot read property 'findIndex' of undefined”。 findIndex() 在一个方法中,那么这里有什么问题呢?我在上面添加了完整的表达式..
标签: json ajax reactjs typescript