1.vuex是什么
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。Vuex 和单纯的全局对象有以下两点不同:
Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。
2.开始使用
- 安装
cnpm install vuex --save
- 开始使用
// 创建store (本例在src/strore/index.js中创建store)
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
});
// main.js中引入store 并在创建vue实例时传入store
import store from './store/index.js';
new Vue({
el: '#app',
router,
store, // 将状态从根组件“注入”到每一个子组件中
template: '<App/>',
components: { App }
})
// 子组件访问store对象
this.$store // 大部分情况我们通过辅助函数来访问(mapState/mapMutations....)store的属性或方法
3.核心概念
-
state/mapState/...mapState
状态数据
-
getters/mapGetters/...mapGetters
"状态数据的计算属性"
-
matation/store.commit/mapMutations
提交mutation来改变state: store.commit
mutation必须是同步函数 -
action/store.dispatch/mapActions
Action 提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作。