React的useEffect中调用axios返回undefined但网络请求显示成功
问题原因
- 你的
PostService.js中的getPost方法没有返回axios实例生成的Promise对象,函数默认返回值为undefined - 虽然请求本身正常发送、Network面板能看到成功响应,但调用方没有拿到可以等待的Promise实例,
await执行的是undefined,自然拿不到返回结果
解决方法
给getPost方法添加return语句,把axios请求返回的Promise暴露给调用方即可,修改后的PostService.js代码如下:
import instance from "./api"; export default { getPost: () => { // 添加return返回Promise return instance({ method: "GET", url: "/posts" }) .then((res) => { // 这里也可以直接return res.data,拿到结果后无需再取data字段 return res; }) .catch((err) => { return err; }); } };
也可以使用箭头函数隐式返回的写法简化代码:
getPost: () => instance({ method: "GET", url: "/posts" }).then(res => res).catch(err => err)
修改后重新运行,await PostService.getPost()就能正常获取到请求返回的响应内容。
内容的提问来源于stack exchange,提问作者CCCC
相关产品推荐
相关产品推荐

