理解理解vuex的状态管理模式架构的状态管理模式架构
一: 什么是vuex?
官方解释如下:
vuex是一个专为vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证以
一种可预测的方式发生变化。
使用方式有如下2种:
1. 如果直接在浏览器下引用包的话;如下:
接下来就可以使用了。
2. 使用npm安装
npm install vuex --save
然后在入口文件引入方式如下:
首先我们先来看看一个简单的demo,再来对比下vuex到底做了什么事情。具体为我们解决了什么事情?
我们先来实现一个简单的demo,有一个标签显示数字,两个按钮分别做数字的加一和减一的操作;如下使用纯vue的demo如
下:
如上的代码的含义是:button的标签内绑定两个函数,当点击的时候 分别调用 inc 和 dec的对应的函数,接着会调用 vue中的
methods的对应的方法
。然后会对data中的count属性值发生改变,改变后会把最新值渲染到视图中。
注意:上面的代码直接复制运行下就可以看到效果了。
现在我们来看看使用vuex的方式来实现如上demo。
注意:上面的代码直接复制运行下就可以看到效果了。
对比下上面的代码:
1. 引用vuex源码;
2. methods的方法不变,但是方法内的逻辑不在函数内进行,而是让store对象去处理。
3. count数据不再是一个data函数返回的对象的属性了。而是通过store方法内的计算字段返回的。
具体的调用如下:
先view上的元素操作点击事件 -> 调用methods中的对应方法 -> 通过store.commit(type) 触发store中的mutations对应的方法来
改变state的属性,值发生改变后,视图就得到更新。
回到store对象上来,store对象是 Vuex.Store的实列。在store内分为state对象和mutations对象,其中state存放的是状态,
比如count属性就是它的状态值,而mutations则是一个会引发状态改变的所有方法。
理解什么是状态管理模式?
状态管理:简单的理解就是统一管理和维护各个vue组件的可变化状态。
我们明白vue是单向数据流的,那么它的状态管理一般包含如下几部分:
1. state; 驱动应用的数据(一般指data中返回的数据)。
2. view; 一般指模板,以声明的方式将state的数据映射到视图。
3. actions: 响应在view上的用户输入导致的状态变化。
但是当我们的应用遇到多个组件共享状态时候,那么单向数据流可能不太满足我们的需求:
比如如下几个方面:
1. 多个视图依赖于同一状态。
传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。