Axios请求返回undefined,Postman测试接口正常、React调用返回200无数据
问题根因
你当前的问题是同时混用了await和.then()链式调用,变量赋值逻辑出现错误:
- 你把
await axios.get(...).then(...)的返回值赋值给了response变量,但.then()回调如果没有显式return值,默认返回的是undefined - 你在
.then()内部打印response的时候,这个变量的赋值逻辑还未完成(因为整个await后的链式调用还没执行结束),自然拿到的是undefined
修复方案
两种异步处理语法二选一即可,不要混用:
方案1:仅使用async/await语法(更推荐)
const submit = async (e: SyntheticEvent) => { e.preventDefault(); try { const response = await axios.get('certificates', { params: { sponser }, }); console.log(response); // 此处可正常拿到完整响应内容 alert(response.status); alert(response); } catch (err) { // 统一处理请求异常 console.error('请求出错:', err); } };
方案2:仅使用.then()链式调用语法
const submit = (e: SyntheticEvent) => { e.preventDefault(); axios .get('certificates', { params: { sponser }, }) .then((res) => { console.log(res); // 直接在then回调内处理响应 alert(res.status); alert(res); }) .catch((err) => { console.error('请求出错:', err); }); };
额外验证点
调整语法后如果还是拿不到预期的业务返回数据,可以检查响应对象的res.data字段,axios会把接口实际返回的业务内容封装在data属性下,直接打印res拿到的是axios包装后的完整响应对象。
内容的提问来源于stack exchange,提问作者Shruti sharma
相关产品推荐
相关产品推荐

