一、Vuex基础
Vuex的定义
官方介绍:
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension (opens new window),提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。
定义中提到了“状态管理模式”,那么什么是状态管理模式?举个简单的例子,比如我们一个电商网站,上面有很多商品,A用户登录买掉了一个,那么平台上的商品就会少掉一个,那么商品的“数量”这个数据状态就发生了变化,我们单一的一个状态管理应用包含以下几个部分:
state:驱动应用的数据源;
view:以声明方式将 state 映射到视图;
actions:响应在 view 上的用户输入导致的状态变化。
以下是一个表示“单向数据流”理念的简单示意:
那么也会有这样一种场景,很多人同时去买这些商品,也就是都在操作这些商品数据,我们该怎么去处理呢?可以看出这些商品就是我们的一些公用数据,那么我们如果通过常规的组件之间传值的话肯定是可以处理的,但是操作起来就非常的繁琐,所以这样,Vuex就提出了这样的操作公共数据的解决方案,他就是用来存放、管理我们的公共数据的,也就是我们常说的“数据仓库”。
当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:
多个视图依赖于同一状态。
来自不同视图的行为需要变更同一状态。
对于问题一,传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。
对于问题二,我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。以上的这些模式非常脆弱,通常会导致无法维护的代码。
因此,我们为什么不把组件的共享状态抽取出来,以一个全局单例模式管理呢?在这种模式下,我们的组件树构成了一个巨大的“视图”,不管在树的哪个位置,任何组件都能获取状态或者触发行为!通过定义和隔离状态管理中的各种概念并通过强制规则维持视图和状态间的独立性,我们的代码将会变得更结构化且易维护。Vuex 是专门为 Vue.js 设计的状态管理库,以利用 Vue.js 的细粒度数据响应机制来进行高效的状态更新。
安装与使用
1、直接引用或者下载离线引用
引用和下载地址:https://unpkg.com/vuex
2、命令行安装
npm:
npm install vuex --save
yarn:
yarn add vuex
通过 Vue.use() 来安装 Vuex将Vuex挂载到Vue实例上来使用,如下:
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
下一篇:Vue项目数据状态管理机制Vuex详解之二:Vuex核心讲解(数据状态管理)。