如何从 ajax 响应中正确读取 json 数据?

How can I properly read json data from ajax response?

我做了这样的事情:

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;

但是我得到了未捕获的类型错误:无法读取未定义的 属性 'list'...

当我这样做时它起作用了:

const data: IScheduler = {
      generatedDate: "03.12.2017";
      subjects: [
          ....
      ],
};

但这不是重点。我究竟做错了什么?我该如何解决?有人可以帮我吗?

在您所在的州没有 属性 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: []
       }
   };
}