vuex中引入this
时间: 2024-06-13 20:02:30 浏览: 79
vue项目中在外部js文件中直接调用vue实例的方法比如说this
在Vuex中,`this`关键字通常用于引用当前状态或 mutations、actions中的方法。当在组件内使用`this.$store`访问Vuex store时,`this`实际上指向的是组件实例。然而,如果你在actions或mutations中直接使用`this`,它会自动绑定到调用该动作或方法的上下文中,也就是调用者(可能是组件实例)。
举个例子:
```javascript
// 在组件内的计算属性
computed: {
user () {
return this.$store.state.user; // 'this'在这里指向组件实例
}
}
// 在action中
actions: {
async fetchUser ({ commit }) {
const response = await axios.get('api/user');
commit('SET_USER', response.data); // 'this'在这里也指向调用这个action的组件实例
}
}
// 在mutation中
mutations: {
SET_USER (state, newUser) {
state.user = newUser; // 'this'在这里同样指的是store实例
}
}
```
如果需要在store内部访问`this`,通常会使用`context`对象,它是每个action和mutation默认接收的一个对象,包含了`dispatch`, `commit`, `state`, 和`rootState`等属性。
```javascript
// 在store的action中
export default {
async fetchData ({ commit }) {
const data = await someApiCall();
commit('updateData', data);
}
}
// mutation
export const updateData = (state, newData) => {
// 使用context的this指向store实例
this.commit('anotherMutation', newData);
}
```
阅读全文