在 Vue 中使用 Vuex 进行模块化管理状态非常简单,以下是一个基本的代码示例:
在 main.js 中引入 Vuex:
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
// 创建 store
const store = new Vuex.Store({
// 定义状态
state: {
count: 0
},
// 定义 mutations
mutations: {
increment(state) {
state.count++
}
},
// 定义 actions
actions: {
increment(context) {
context.commit('increment')
}
},
// 定义 getters
getters: {
doubleCount(state) {
return state.count * 2
}
}
})
// 将 store 注入到 Vue 实例中
new Vue({
store,
render: h => h(App)
}).$mount('#app')
然后在组件中使用 Vuex:
<template>
<div>
<p>Count: {{ count }}</p>
<p>Double Count: {{ doubleCount }}</p>
<button @click="increment">Increment</button>
</div>
</template>
<script>
import { mapState, mapGetters, mapActions } from 'vuex'
export default {
computed: {
// 将 Vuex 的 state 映射为组件的计算属性
...mapState(['count']),
// 将 Vuex 的 getters 映射为组件的计算属性
...mapGetters(['doubleCount'])
},
methods: {
// 将 Vuex 的 actions 映射为组件的方法
...mapActions(['increment'])
}
}
</script>
这样就可以在组件中通过 count
获取状态值,通过 doubleCount
获取计算属性值,并通过 increment
方法触发 mutation 来修改状态。