Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 的出现使得大型 Vue.js ...
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 的出现使得大型 Vue.js 应用程序的状态管理变得更加简单和可维护。
状态是 Vuex 的核心。它是一个包含所有组件公共状态的对象。所有的组件都可以通过 this.$store.state 访问这些状态。
const store = new Vuex.Store({ state: { count: 0 }
});Getters 是 Store 的计算属性,类似于 Vue 组件的计算属性。Getters 可以用来从 Store 的状态中派生出一些状态,并可以像访问普通属性一样访问这些状态。
const store = new Vuex.Store({ state: { count: 0 }, getters: { doneTodosCount: (state) => { return state.todos.filter(todo => todo.done).length; } }
});Mutations 是 Vuex 中唯一更改 Store 状态的方式。每个 mutation 都有一个字符串的 type 和一个执行更改的回调函数。
const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++; } }
});Actions 类似于组件中的 methods,它们提交的是 mutation,而不是直接变更状态。Action 可以包含任意异步操作。
const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++; } }, actions: { increment(context) { context.commit('increment'); } }
});当应用变得足够复杂时,单一的状态对象会变得难以管理和维护。这时,我们可以将 Store 分割成模块(Modules)。
const store = new Vuex.Store({ modules: { moduleA: { state: () => ({ /* ... */ }), mutations: { /* ... */ }, actions: { /* ... */ }, getters: { /* ... */ } } }
});npm install vuex --saveimport Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({ // ...
});
new Vue({ el: '#app', store, // ...
});this.$store.state 访问状态,通过 this.$store.commit 提交 mutation,通过 this.$store.dispatch 分发 action。export default { computed: { count() { return this.$store.state.count; } }, methods: { increment() { this.$store.commit('increment'); } }
};Vuex 是一个功能强大的状态管理库,它可以帮助开发者更好地管理 Vue.js 应用程序的状态。通过理解 Vuex 的核心概念和使用步骤,开发者可以更高效地构建大型 Vue.js 应用程序。