zxdfe / FE-Interview

Every step counts
34 stars 1 forks source link

第49题:聊一聊Vuex呢? #50

Open zxdfe opened 2 years ago

akai2524 commented 2 years ago

得分点: state、mutations、getters、actions、module、store.commit、store.dispatch

标准回答 : Vuex是集中管理项目公共数据的。Vuex 有state、mutations 、getters、actions、module属性。

state 属性用来存储公共管理的数据。

mutations 属性定义改变state中数据的方法, 注意:不要在mutation中的方法中写异步方法ajax,那样数据就不可跟踪了。

getters 属性可以认为是定义 store 的计算属性。就像计算属性一样,getter的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

action属性类似于mutation,不同在于:Action 提交的是 mutation,而不是直接变更状态。Action 可以包含任意异步操作。

moudle属性是将store分割成模块。每个模块拥有自己的state、mutation、action、getter、甚至是嵌套子模块,从上至下进行同样方式的分割 使用方法:

state:直接以对象方式添加属性

mutations :通过store.commit调用

action:通过 store.dispatch方法触发

getters:直接通过store.getters.调用

加分回答:可以使用辅助函数mapState、mapMutations、mapAction、mapGetters一次性获取每个属性下对应的多个方法。 VueX在大型项目中比较常用,非关系组件传递数据比较方便。