每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。
Vuex 和单纯的全局对象有以下两点不同: Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。 你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。
state 用于保存所有所有组件的公共数据 单一状态树 mutation 可以理解为store中的methods 状态更新的唯一方式 主要包括两个部分 字符串的事件类型(type) 一个回调函数(handler) 该回调函数的第一个参数是state 第二个参数是payload(载荷) 很多参数需要传递payload可以是对象,再从对象中取出相关信息 getters getters的返回值会根据它的依赖被缓存起来,且只有当他的依赖发生改变才会被重新计算 一个参数state,另一个参数可以使他本身 如果传进来的值不确定,那么无法return一个结果, 此时可以return一个函数function 传入需要计算的变量 再 return state.students.filter(s => s.age > age) 返回结果 actions actions和mutations,不同的地方 actions也是通过mutations提交 他的参数是 context(和store对象具有相同方法和属性)可以context.state actions包含异步操作,mutations,包含同步操作,绝对不允许出现异步操作 在vue组件中,调用actions中的方法,用dispatch mutations和其他的用 commit actions和mutations一样也支持传递payload 在actions中,可以将异步操作放在promise中,成功或失败后调用resolve或reject modules 将store分割成模块(module),每个模块有自己的 state.mutations.actions.getters module中的mutations和actions,接收的第一个参数是局部对象的状态store 虽然定义在moduleA或B中,但是在调用的时候依然是通过this.$store.commit来直接调用的