为什么替换fetch为axios后返回值不正确,控制台打印undefined?
问题根因
你对axios返回的响应对象结构理解有误,axios并没有提供response.json属性,自然取不到值。
- fetch返回的原始响应对象需要调用
await response.json()手动解析JSON数据,拿到的才是后端返回的业务数据 - axios会自动解析JSON响应,后端返回的业务数据直接存放在响应对象的
data属性中,不需要额外调用解析方法
修正后代码
async componentDidMount() { console.log('app mounted'); const tokenString = sessionStorage.getItem("token"); const token = JSON.parse(tokenString); const response = await axios({ method: 'get', url: Config.apiUrl + `/api/Orders/GetAllInvoices`, headers: { "Accept": "application/json", "Content-Type": "application/json", 'Authorization': 'Bearer ' + token.token } }); // 直接取response.data即可拿到解析完成的业务数据 console.log(`axios: `, response.data) this.setState({ invoiceList: response.data }); }
如果需要排查响应异常,可先打印完整的response对象,确认返回结构是否符合预期。
内容的提问来源于stack exchange,提问作者Randy
相关产品推荐
相关产品推荐

