Vuex中Mutations中的方法如何互相调用
时间: 2024-03-06 19:49:16 浏览: 122
在Vuex的Mutations中,可以使用this.commit('mutationName', payload)来调用同一个Mutations中的其他方法。需要注意的是,调用其他Mutations方法时,需要使用this.commit而不是this.$commit,因为this.$commit是全局的,会调用store中的其他module的Mutations。
下面是一个例子,其中有两个Mutations方法,分别是increment和doubleIncrement,doubleIncrement方法会调用increment方法:
```
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment (state) {
state.count++
},
doubleIncrement (state) {
this.commit('increment')
this.commit('increment')
}
}
})
store.commit('doubleIncrement')
console.log(store.state.count) // 输出 2
```
在doubleIncrement方法中,调用了increment方法两次,因此state.count的值会增加2。
相关问题
vue3如何调用vuex中mutations里的方法
在 Vue3 中调用 Vuex 中的 mutations 方法非常简单,只需要使用 `store.commit('mutationName', payload)` 的方式即可。
其中,`mutationName` 是你在 Vuex store 中定义的 mutation 名称,`payload` 是传递给 mutation 的数据。比如,如果你在 Vuex 中定义了一个 mutation:
```javascript
const store = createStore({
state: {
count: 0
},
mutations: {
increment(state, payload) {
state.count += payload
}
}
})
```
那么,在 Vue3 组件中,你可以这样调用该 mutation:
```javascript
import { useStore } from 'vuex'
export default {
setup() {
const store = useStore()
function handleClick() {
store.commit('increment', 1)
}
return {
handleClick
}
}
}
```
这里我们使用了 `useStore` 函数从 Vuex store 中获取 store 实例,然后在 `handleClick` 方法中调用了 `store.commit` 方法来触发 `increment` mutation。
vue中的js文件怎么调用vuex中mutations里面的方法
在 Vue 项目中,你可以使用 Vuex 来管理应用状态,在你的 Vue 组件中调用 Vuex 中的 mutation 方法有两种方式:
1. 通过 `this.$store.commit` 调用,例如:
```
this.$store.commit('increment', 10)
```
2. 通过使用 mapMutations 辅助函数将组件的 methods 映射为 store.commit 调用,例如:
```
import { mapMutations } from 'vuex'
export default {
// ...
methods: {
...mapMutations(['increment']),
incrementIfOddOnRootSum ({ state, commit, rootState }) {
if ((state.count + rootState.count) % 2 === 1) {
commit('increment')
}
}
}
}
```
然后你就可以在组件中通过调用 `this.increment()` 来触发 increment mutation 了。
希望这能帮到你。
阅读全文