Vuex是Vue.js的官方状态管理库,它提供了一个集中式存储管理所有组件的状态的方式,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex的核心思想是将应用的状态抽取出来,以全局单例模式进行管...
Vuex是Vue.js的官方状态管理库,它提供了一个集中式存储管理所有组件的状态的方式,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex的核心思想是将应用的状态抽取出来,以全局单例模式进行管理,这使得状态管理更加清晰和易于维护。
State是Vuex中存储应用状态的容器,相当于组件中的data属性。它是一个响应式的对象,所有组件都可以通过this.$store.state来访问它。
const store = new Vuex.Store({ state: { count: 0 }
});Getters类似于Vue组件中的计算属性,用于从state中派生出一些状态,或者对state进行加工处理后返回。它可以理解为是带有逻辑处理的只读“状态访问器”。
const store = new Vuex.Store({ state: { count: 0 }, getters: { doubleCount: state => state.count * 2 }
});Mutations是Vuex中唯一可以修改state的方法,它必须是同步函数,接收state作为第一个参数。Mutations需要被显式地提交(commit),并且应当尽量保持简单,仅做状态变更而不包含业务逻辑。
const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++; } }
});Actions类似于Mutations,但它是用于处理异步操作的,可以包含任意异步逻辑。Actions提交Mutations,而不是直接变更状态。
const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++; } }, actions: { increment(context) { context.commit('increment'); } }
});当应用的数据变得复杂时,可以将状态分割成多个模块,每个模块都可以拥有自己的state、mutation、action和getter。
const store = new Vuex.Store({ modules: { user: { namespaced: true, state: { count: 0 }, mutations: { increment(state) { state.count++; } } } }
});安装Vuex:
<script src="https://unpkg.com/vuex@3.6.2/dist/vuex.min.js"></script> npm install vuex --save创建Vuex Store:
import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++; } }, actions: { increment(context) { context.commit('increment'); } } }); new Vue({ el: '#app', store, render: h => h(App) }); <template> <div> <h1>{{ count }}</h1> <button @click="increment">Increment</button> </div> </template> <script> import { mapState, mapActions } from 'vuex'; export default { computed: { ...mapState(['count']) }, methods: { ...mapActions(['increment']) } }; </script>通过以上介绍,相信你已经对Vuex有了初步的了解。Vuex是构建大型Vue.js应用的重要工具,它可以帮助你更好地管理和维护应用的状态。