vue中this.axios.get().then()中的this和that
时间: 2024-11-10 07:26:25 浏览: 4
vue 2.x 中axios 封装的get 和post方法
在 Vue 中,`this` 关键字的作用域是在函数内部指向当前作用域的上下文对象,通常是指向 Vue 实例。当你在 `methods`、`data` 或者响应式组件的生命周期钩子(如 `mounted`, `updated` 等)中使用 `axios.get()` 这样的异步请求时,`this.axios.get()` 中的 `this` 指代的就是 Vue 实例。
然而,在箭头函数 (`() => { ... }`) 中,`this` 的行为会有所变化,它不会自动绑定到外部作用域的 `this` 上,而是会绑定到创建它的上下文中。所以在 `.then()` 函数中,如果是一个箭头函数:
```javascript
.then(() => {
console.log(this); // 这里 this 可能不是 Vue 实例,取决于箭头函数如何使用
})
```
为了避免这种情况,推荐在 `then()` 中显式地使用 `bind(this)` 来绑定 `this` 到 Vue 实例上,如下所示:
```javascript
.then((response) => response.json().then(data => {
console.log(this); // 这里的 this 将指向 Vue 实例
}))
.bind(this);
```
阅读全文