首先,vuex官网上说是一个vue的状态管理工具。可能状态比较难理解,大家可以简单地把状态理解成为vue的data里面的变量。当组件之间的data变量关系复杂一点的时候,就把其中的变量抽离出来管理。大家知道,父子组件之间的通信是比较麻烦的,子组件改变父组件数据还要用$emit。如果有一个地方跟仓库一样统一存放着数据,谁要用谁去请求,谁想改就改该多好是吧,vuex就是干这个的,有点全局变量的意思。任何组件需要拿,改东西,都可以找他。
vuex五个核心属性
1、首先state是惟一的数据载体,跟仓库一样。
2、而mutations是唯一可以改变state的值的东东,使用commit修改state。这两个是vuex最最基础缺一不可的。简单的vuex管理就使用这两个就行。
3、getters的官方说明:派生出新的状态,这个比较难理解。简单来说,就是过滤,组合!
比如说state里面存了一个数组,数组有好多个数据,而我只想要用status:0的那些个,就可以用getters。是不是有点过滤的意思。所以getters有时候还很好用,很必要!。
4、actions是用来提交mutations,为什么不用actions直接修改state值呢?其实大多数的管理工具都是这样做的,比如redux,mobx。actions定义修改的动作并且进行数据请求,通过commit再去触发对应的mutations。是很重要的一个属性,也符合解耦的思想。
5、modules也是辅助方法。比如modulesA有一个完整的state、actions、getters、mutations;modulesB也可以有一个完整的state、actions、getters、mutations,他就是将store分割成模块,避免混淆。