Vuex里的数据都是响应式的,任何组件使用同一store的数据时,只要store的数据变化,对应的组件也会立即更新。
5个字段:
- state
- mutations:同步方法
- actions:异步方法
- getters
- modules
Vuex很像是一种与开发者的约定,涉及数据改变的 用mutations,存在业务逻辑的 用actions
state
在组件内,来自store的数据只能读取,不能手动改变,改变store中的数据的唯一途径就是显式地提交mutations
可以通过this.$store.state.count
进行调用
mutations
在组件内,通过this.$store.commit(事件名)
来执行mutations.
很像JavaScript的观察者模式,组件只负责提交一个事件名,Vuex对应的mutations来完成业务逻辑
mutations中的方法还可以接受第二个参数,可以是数字,字符串或对象等类型
getters
用法和组件中的计算属性类似,getter也可以依赖其他的getter,把getter作为第二个参数
比如:
1 | const store = new Vuex.Store({ |
actions
不同的是actions里提交的是mutation,并且可以异步操作业务逻辑
action在组件内通过$store.dispatch
触发
比如:
1 | //main.js |
modules
用来将store分割到不同的模块,每个module拥有自己的state,getters,mutations,actions.而且可以多层嵌套。