什么是Vuex?
在Vue中实现集中式状态管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。
Vuex解决了什么问题?
解决两个问题。1、多个组件依赖于同一状态时,对于多层嵌套的组件的传参将会非常繁琐;2、来自不同组件的行为需要变更同一状态。以往采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。以上的这些模式非常脆弱,通常会导致无法维护的代码。
什么时候用Vuex
当项目遇到以下两种场景时
- 多个组件依赖于同一状态时。
- 来自不同组件的行为需要变更同一状态
为什么要用vuex而不是直接使用window下的全局变量
1、因为vuex 的状态是响应式的,而全局变量并不是响应式的。2、全局变量多了会造成命名污染。3、全局变量任意地方都可以修改,无法定位修改源,而vuex可以通过开发者工具追踪状态
Vuex的5个核心属性是什么?
state、getters、mutations、actions、modules
Vuex中状态储存在哪里,怎么改变它?
存储在state中,改变Vuex中的状态的唯一途径就是通过mutation进行修改。
Vuex中状态是对象时,使用时要注意什么?
因为对象是引用类型,将state的对象复制到新对象,那么改变属性还是会影响原始数据,这样会改变state里面的状态,所以要用深度拷贝到新对象当中
Vuex的状态是对象,给改对象添加新属性会有响应式吗
Vuex后添加的属性是没有响应式的,这点和组件的data一样,所以要么使用$set,要和替换整个对象。同时,删除某个存在的对象,也没有响应式,需要借助Vue.delete(obj,“属性名”)。
怎么在组件中批量使用Vuex的state状态?
使用mapState辅助函数, 利用对象展开运算符将state混入computed对象中
Vuex中要从state派生一些状态出来,且多个组件使用它,该怎么做?
使用getter属性,相当Vue中的计算属性computed。getter可接收两个参数,第一个是当前模块的state,第二个是整个store的getters(可以用来访问其他getter),第三个是整个store的state
bigSum(state, getters, rootState) {
console.log