我做了类似的事情:
axios.get(url).then(result => {
this.setState({
list: result.data,
});
})
.catch(e => {
console.log("Some error", e);
});
构造函数如下所示:
constructor(props: any) {
super(props);
this.state = {
list: [],
};
}
我想把它放在某处并检查它是否有效:
const {fetchedData}: any = this.state;
const data: IScheduler = fetchedData.list;
但是我没有被捕获TypeError:无法读取未定义的属性'list'...
当我这样做时,它会起作用:
const data: IScheduler = {
generatedDate: "03.12.2017";
subjects: [
....
],
};
但这不是重点。我究竟做错了什么?我该如何解决?有人可以帮帮我吗?
答案 0 :(得分:0)
在您所在的州,没有财产fetchedData
。您将列表设置为this.state.list,而不是this.state.fetchedData.list
。所以你需要改变你的代码:
const {fetchedData}: any = this.state;
const data: IScheduler = fetchedData.list;
为:
const {list}: any = this.state;
const data: IScheduler = list;
它应该工作。如果您真的需要第一个数据结构,则需要更改默认状态结构setState
,但不推荐使用嵌套数据结构。
axios.get(url).then(result => {
this.setState({
fetchedData: {
list: result.data
}
});
})
.catch(e => {
console.log("Some error", e);
});
构造函数应如下所示:
constructor(props: any) {
super(props);
this.state = {
fetchedData: {
list: []
}
};
}