You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Axios中调用函数?Vue.js中调用时出现undefined报错

解决Axios调用Vue方法时出现undefined的问题

先梳理下你代码里的几个关键语法错误,正是这些问题导致了undefined报错:

1. Created生命周期钩子的写法错误

Vue的生命周期钩子需要是函数形式,但你写成了对象字面量。正确的写法应该是:

created() {
  this.List();
}
// 或者ES5兼容写法
created: function() {
  this.List();
}

原来的created: { this.List(); }会被Vue当成普通的组件属性,根本不会触发初始化钩子,导致List方法一开始就没被执行,后续自然会出现方法undefined的问题。

2. Axios回调与方法的闭合语法错误

你的List方法里,axios的then回调缺少闭合括号,整个方法也没有正确收尾。修正后的完整代码如下:

methods: {
  sett() {
    console.log("result");
  },
  List() {
    var self = this;
    axios.get("http://localhost:8080/api/v1/pas/device")
      .then(function(res) {
        self.sett();
      }) // 补上then回调的闭合括号
      .catch(function(error) {
        // 建议加上catch捕获请求错误,避免控制台无意义报错
        console.error("请求失败:", error);
      });
  } // 补上List方法的闭合括号
},
created() {
  this.List();
}

之前的代码因为缺少这些闭合符号,导致Vue无法正确解析组件的methods配置,方法无法被识别,调用时就会出现undefined提示。

额外优化建议

在Vue中,你可以用箭头函数代替保存self的写法,箭头函数会自动继承外部的this指向,代码更简洁:

List() {
  axios.get("http://localhost:8080/api/v1/pas/device")
    .then(res => {
      this.sett(); // 直接用this即可,箭头函数绑定了组件实例的this
    })
    .catch(error => {
      console.error("请求失败:", error);
    });
}

按照上面的修正,你的代码应该就能正常执行,不会再出现undefined的报错了。

内容的提问来源于stack exchange,提问作者Randy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 21:02:37