vuex是vue的一个插件,下面要从以下三方面来初步了解以下vuex
1.vuex是什么
官方解释:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化
通俗解释:官方解释我不会自己去看?还要你解释(手动滑稽),于是就有了通俗解释,vuex可以把它理解为是在项目内全局声明的一些通用变量(注意是可以理解为,不是等价于),这个变量在各个组件内都能引用并访问到,即组件数据共享且保持数据一致,数据声明在一个统一的仓库(store)里,仓库里数据更新是响应式的(也是为什么不是等价于全局变量),这样非父子组件之间的通信就变得简单许多了,不会出现A组件数据更新但是B组件数据没有更新了
2.vuex能做什么
实际上在1中也阐述了一部分,可以保证在不同的组件中保证数据的统一性,如果没有vuex我们就不能保证数据的统一性了吗?当然是可以的,但是操作比较复杂,其中一种方法是:
如果有三个组件A B C,他们之间都有user_name 要展示,在A中更改了user_name,此时为了保证B C也要更改,要A主动分别去通知B和C来更新,B和C中还要分别作出响应的操作方法,如此如果涉及到比较多的地方会非常麻烦以及很多重复的动作
但是使用vuex,只需要在A B C中引入仓库(store)中的某一值,在A中更改只需要将更改commit到仓库,B和C即可得到更新,无需再由A来通知B和C来做什么事情
3.怎么用vuex
使用vuex首先要将其添加到项目依赖中去
npm install vuex -S
之后在项目中引入
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {//仓库
count: 0
},
mutations: {//况且叫仓库变更员,改变仓库状态用
increment (state) {
state.count++
}
}
})
new Vue({
el: '#app',
store,
components: { App },
template: '<App/>'
})
以上就可以在组件中引入某一仓库状态,并使用,怎么引用的这里暂不讨论
那讨论什么呢,为什么要有个仓库变更员的存在,因为vuex不能再使用状态的组件里直接更改状态,比如上面的
this.state.count++;在组件中是不允许这么操作的,就是组件没有权限直接动仓库内状态,必须要告诉仓库管理员
然后管理员来帮你修改,这样做的好处是状态变更被统一起来,方便追踪状态的变化过程,如果任意组件都能变更仓库内的状态,那么这个状态的更改是比较不便追踪以及确保状态变更的可控性
有以上两个就可以使用vuex了,但是vuex的功能远不止如此
后面再详细的讲解vuex的其他详细功能及其原理