Vuex 是什么?

  Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化

Vuex的五个核心概念

  1.State: Vuex使用单一状态树,使用一个对象包含了所以的应用状态。至此它便作为唯一的数据源而存在,即每个应用中只存在一个State对象。

  2.Getter:相当于Vue中的computed(计算属性),在Vue组件中读取状态更多是通过getters而不是直接读取State中的数据。例:

    

computed: {
count () {
return this.$store.getters.count
// return this.$store.state.count //通常使用getters获取状态 而不是直接读取state中的状态值
}
}

  3.Mutation:Vuex中更改状态的唯一途径, 与Vue中的methods很像,你可以在其中定义改变状态的方法(每个方法都可接收两个参数(state, [data 可不写]))。例:

    

mutation: {
increment (state) {
// 变更状态
state.count++
}
}

  4.Action:虽然Mutation可改变Vuex的状态值,但是只能实现同步操作,在很多时候需要用到异步,因此需要action,主要有两个作用:

  • Action 提交(commit)的是 mutation,而不是直接变更状态。
  • Action 可以包含任意异步操作。

  5.Module: 由于Vuex使用单一状态树,应用的所有状态都会集中到一个对象中,当应用十分复杂时state对象会变得十分庞大。为了解决这个问题Vuex允许将store分成模块module,每个模块有state,getter,mutation,action。也可以嵌套子模块,从上至下以同样的方法分割。

  

const moduleA = {
state: { ... },
mutations: { ... },
actions: { ... },
getters: { ... }
} const moduleB = {
state: { ... },
mutations: { ... },
actions: { ... }
} const store = new Vuex.Store({
modules: {
a: moduleA,
b: moduleB
}
})

项目结构

  

├── index.html
├── main.js
├── api
│ └── ... # 抽取出API请求
├── components
│ ├── App.vue
│ └── ...
└── store
├── index.js # 我们组装模块并导出 store 的地方
├── actions.js # 根级别的 action
├── mutations.js # 根级别的 mutation
└── modules
├── cart.js # 购物车模块
└── products.js # 产品模块

最新文章

  1. [转]Asp.net mvc 网站之速度优化 -- 页面缓存
  2. centos6.x下手工安装二进制Docker v1.1x
  3. mysql5.7.12直接解压zip包,安装过程
  4. java 用socket制作一个简易多人聊天室
  5. c++ 字符串函数用法举例
  6. WCF之错误和异常
  7. Java基础知识强化86:BigInteger类之BigInteger概述和构造方法
  8. Lightdm:奔跑吧GUI[已解决]
  9. angular localStorage使用方法
  10. Tree on the level UVa122
  11. centos6.7编译安装mysql5.7.17
  12. LeetCode 55. Jump Game (跳跃游戏)
  13. Java多线程:ThreadLocal
  14. vue中的eventBus
  15. Luogu4745/Gym101620G CERC2017 Gambling Guide 期望、DP、最短路
  16. Redux学习(3) ----- 结合React使用
  17. 使用 python -m SimpleHTTPServer 快速搭建http服务
  18. 一脸懵逼学习Hadoop-HA机制(以及HA机制的配置文件,测试)
  19. NSObject
  20. 36-2018 蓝桥杯Java B组试题及答案

热门文章

  1. query 与 params 使用
  2. mysql 5.5之参数详解
  3. netty源码解解析(4.0)-22 ByteBuf的I/O
  4. 基于Asp.Net Core MVC和AdminLTE的响应式管理后台之侧边栏处理
  5. Python 2.X和3.X主要区别和下载安装
  6. 【linux】【Python】python2.7安装pip9.0.1
  7. 使用uEdit时,在线管理图片功能不可用
  8. Docker运行mysql,redis,oracle容器和SpringBoot项目
  9. 基于操作系统原理的Linux 的基本操作和常用命令的使用
  10. 阿里云centos6.9搭建fastDFS文件服务器