Vue axios中this的指向问题

在Vue里this始终指向Vue,但axios中this为undefined。若要赋值给变量渲染数据,可通过=>函数让this指向Vue,也可将this保存在that中,在函数里使用that,博主分享了该问题的解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Vue中this始终指向Vue,但axios中this为undefined,例如

这里写图片描述

若需要赋值给变量用以渲染数据,可以通过=>函数,这时this为Vue

这里写图片描述

或者可以直接通过: 
let that = this 
将this保存在that中,再在函数中使用that均可 
被坑了很久,一直打印出来undefined,终于解决了

### 如何在 Vue 中使用 Axios 的 `then` 方法处理响应 为了在 Vue 应用程序中利用 Axios 发起 HTTP 请求并处理服务器返回的数据,通常会遵循如下模式: 安装 Axios 后,在组件的方法部分定义一个用于发起请求的函数。此函数内调用 Axios 并链式调用 `.then()` 来指定当请求成功完成时应执行的操作。 ```javascript // 假设已经通过 npm 或者其他方式引入了 axios import axios from 'axios'; new Vue({ el: '#app', data() { return { messages: [], postDate: '' }; }, methods: { fetchMessages() { axios.get('/api/messages') // 使用相对路径或者完整的URL来获取消息列表 .then(function(response) { this.messages = response.data; console.log(this.messages); // 打印接收到的消息数据以便调试 }.bind(this)) // 绑定当前Vue实例给回调函数内的this, 确保能访问到data属性和其他methods方法[^3] .catch(function(error) { console.error("There was an error fetching the messages!", error); }); axios.post('/api/posts', { /* 提交的数据 */ }) .then(function(response) { this.postDate = response.data.datePosted || ''; console.log(`Post date received: ${this.postDate}`); // 处理帖子日期 }.bind(this)) .catch(function(error) { console.error("Failed to create a new post.", error); }); } }, mounted() { this.fetchMessages(); // 当组件挂载完成后立即尝试加载消息 } }); ``` 上述代码展示了两个不同的 API 调用——一个是 GET 请求用来检索信息;另一个 POST 请求则可能涉及提交新资源至服务器。每次成功的请求都会触发相应的`.then()`处理器,其中包含了更新视图所需的状态逻辑以及任何必要的日志记录语句。 值得注意的是,由于 JavaScript 的上下文特性,在箭头函数之外的地方(比如普通的匿名函数),`this` 关键字不会自动指向 Vue 实例。因此这里显式地绑定了 `this` 到每个 `.then()` 回调上以确保能够正确操作组件状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值