1.为什么要使用vuex
解决组件之间的 通信问题
方案有
1)常说的父子 子父组件之间的通信,问题:子组件是不可以改变父组件的数据
2) 借助第三方 :事件总线
给vue实例绑定一个事件总线 问题:通信 数据多 杂 不好管理
例如 this.emit('aaa',{}) this.emit('bbb",{})
3)于是乎,出现了第三方 状态池 state 把数据状态 扔到一个状态 池中
2. mutation 和 action的区别
类比如数据库,mutation是一次数据的读或者写
action 可以包含多个数据的读或者写,相当于事务的概念,即可以包含多个commit
mutation就是一次同步操作
ation可以包含任意异步操作
3.Getter 和 mutation
Getter相当于对state的get
mutation相当于对state的set
不能直接修改state的状态 ,避免同时去做类似于加减的操作
4.commit
commit 同步
都用commit修改数据,在改数据的那一刻,相当于锁定该操作
5.mapstate,mapGetter...等辅助函数
就是将state上的属性或者方法直接绑定在vue的实例上
通过this.XXX调用 而不是this.$store.XXX
6.关于state与vue data中的双向数据绑定
当严格模式
用这种模式时,必须是值类型
如果是引用类型
则页面上data 的改变,会要去修改state的值
而state值只能有commit 修改
解决方案:官网 vuex中的表单处理
https://vuex.vuejs.org/zh/guide/forms.html