如何正确编写带参数的Axios函数?请求代码位置错误修正求助
问题分析
你的Axios请求代码永远不会执行,因为函数在执行到return语句时就直接终止了,return之后的所有代码都不会被执行。不管searchData是否存在,if/else分支里都有return,所以Axios代码根本没机会运行。
修正方案
根据你的需求,分两种场景调整代码:
场景1:先发送请求,再返回对应数据(异步依赖场景)
如果searchDrafts的返回结果需要结合接口响应逻辑,用async/await简化异步流程:
methods: { async searchDrafts(searchData) { try { // 发送携带searchData的POST请求 const res = await axios({ method: 'POST', url: '/api/drafts/search', data: { searchData } }); // 请求成功后返回对应数据 return searchData ? this.array.hello : this.array; } catch (error) { console.log('post request error', error); // 请求失败时返回默认值 return searchData ? this.array.hello : this.array; } }, },
场景2:先确定返回值,再发送请求(无异步依赖场景)
如果只是想在判断后执行请求,避免提前return终止函数:
methods: { searchDrafts(searchData) { // 先确定要返回的数据,不提前return const returnData = searchData ? this.array.hello : this.array; // 发送携带searchData的POST请求 axios({ method: 'POST', url: '/api/drafts/search', data: { searchData } }) .then(res => { console.log('请求成功', res); // 可在此处理请求成功后的额外逻辑 }) .catch(error => { console.log('post request error', error); }); // 最后返回数据 return returnData; }, },
关键提示
- 不要在需要执行的代码前放置
return,函数会在return处立即终止运行。 - POST请求携带数据时,要通过
data字段传递参数(示例中已添加searchData参数)。
内容的提问来源于stack exchange,提问作者stieve
相关产品推荐
相关产品推荐

