Vuex的作用
1. 什么是Vuex?
官方解释:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。
我的理解就是:实现某些组件间变量的共享。
2. 为什么不用参数传递而用Vuex呢?
先来看一个简单的单向数据流的示意:
状态一般会在视图呈现,视图会发生一些事件(click,input……),由此会对状态产生相应的修改。 但是,当遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏。
- 传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。
- 我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。以上的这些模式非常脆弱,通常会导致无法维护的代码。
3. 应用场景
例如:用户的登录状态( 有些页面/功能只有在用户登录之后才能使用,这时候一般会在网络请求时携带token(令牌),以此来判断用户是否登录),用户的名称、头像、位置、商品的收藏等等在多个页面都能用到的数据
4. Vuex 和单纯的全局对象有以下两点不同:
- Vuex 的状态存储是响应式的。当 Vue 组件从 store(仓库 ) 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
- 不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。
使用Vuex
1. 安装
(1)可以在安装脚手架的时候安装vuex
(2)安装脚手架的时候,没有安装
1
npm install vuex --save
- 在src文件夹下新建store文件夹,在该文件夹下新建index.js文件,添加如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
},
mutations: {
},
actions: {
},
modules: {
}
}) - 在main.js文件中引入
如果是在安装脚手架的时候已经安装了vuex,默认会自动配置
2. 修改store的状态
Devtools:vue开发的一个浏览器插件,能够跟踪state每一步被修改的状态,但是Devtools无法跟踪异步操作,这也就是Actions存在的原因。如果直接通过组件修改State,Devtools无法跟踪,所以改变 store 中的状态的唯一途径就是显式地提交 mutation。
- 安装Devtools
打开浏览器的扩展程序(以Chrome为例),再打开谷歌应用商店(如果打不开,可以使用极简插件安装) - 修改示例
- 调试