this.$store.commit的用法
时间: 2023-12-12 22:04:20 浏览: 128
this.$store.commit 用于触发 Vuex store 中的 mutations 中的函数。mutations 是用于修改 Vuex store 中的 state 的函数集合,而且 mutations 中的函数必须是同步的,也就是说不支持异步操作。
使用 this.$store.commit,需要传递两个参数,第一个参数是 mutations 中的函数名,第二个参数是要传递给 mutations 函数的参数。例如:
```
// 在组件中触发 mutations 中的函数
this.$store.commit('INCREMENT', 10);
```
上面的代码会触发 Vuex store 中的 mutations 中名为 INCREMENT 的函数,并将参数 10 传递给该函数。mutations 中的函数会接收 state 作为第一个参数,并且只能修改 state 中的数据。
需要注意的是,使用 this.$store.commit 进行状态修改是同步的,如果需要进行异步操作,需要使用 actions。
相关问题
this.$store.commit
引用中提到,子组件可以通过`this.$store.commit`方法来访问`this.$store.commit('changetest', xxx)`。这里的`commit`是Vuex中的一个方法,用于提交一个mutation,即改变store中的状态。在这个例子中,子组件通过`commit`方法调用了一个名为'changetest'的mutation,并传入了参数xxx。
引用中提到,子组件可以通过`this.$store`来访问store对象,并使用`this.$store.state.test`来获取`test`的状态值。在这个例子中,`this.$store.state.test`表示子组件可以获取到`test`状态的当前值x。
综上所述,`this.$store.commit`是Vuex中的一个方法,用于提交一个mutation来改变store中的状态;`this.$store.state.test`则是通过`this.$store`来访问store对象,并获取`test`状态的当前值。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [vuex中的this.$store.commit和dispatch()使用](https://blog.csdn.net/coinisi_li/article/details/126782066)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
this.$store.commit 模块化用法
this.$store.commit是Vuex中用于提交mutation的方法。在模块化的情况下,我们需要在store中定义一个模块,然后在组件中使用模块化的方式来提交mutation。具体步骤如下:
1.在store文件夹中创建一个新的js文件,例如user.js,用于定义用户模块。
2.在user.js文件中定义state、mutations、actions和getters等属性和方法,例如:
```javascript
const state = {
userInfo: null
}
const mutations = {
SET_USER_INFO(state, userInfo) {
state.userInfo = userInfo
}
}
const actions = {
setUser({ commit }, userInfo) {
commit('SET_USER_INFO', userInfo)
}
}
const getters = {
getUserInfo: state => state.userInfo
}
export default {
state,
mutations,
actions,
getters
}
```
3.在store.js文件中引入user.js文件,并在modules属性中添加user模块,例如:
```javascript
import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
Vue.use(Vuex)
export default new Vuex.Store({
modules: {
user
}
})
```
4.在组件中使用mapMutations方法来映射user模块中的mutations,例如:
```javascript
import { mapMutations } from 'vuex'
export default {
methods: {
...mapMutations('user', ['SET_USER_INFO'])
}
}
```
5.在组件中使用this.$store.commit方法来提交user模块中的mutation,例如:
```javascript
this.SET_USER_INFO(userInfo)
```
阅读全文