vuex基础理解

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的其他详细功能及其原理



猜你喜欢

转载自blog.csdn.net/garrettzxd/article/details/80932503