在 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 来修改状态。