Vuex核心概念

Vuex有几个比较核心的概念,State, Getters, Mutation, Action, Module
State单一状态树,Vuex提出使用单一状态树,英文名称是Single Source of Truth,在应用开发中,如果状态信息是保存在多个Store对象中,那么之后的管理和维护将会变得十分困难,所以Vuex也使用了单一状态树来管理应用层级的全部状态。单一状态树能够让我们最直接的方式找到某个状态的片段,而且在之后的维护和调试的过程之中,也可以便于管理和维护
Getters有点像计算属性,往往有时候需要从store中获取一下state变异之后的状态,eggetters:{ greaterAgesCount: state => { return state.students.filter(s =>s.age>=20)}}
Getter作为参数和传递参数

greaterAgesStus(state){
  return state.students.filter(s => s.age >= 20)
}

getters默认是不能传递参数的,如果希望传递参数,那么只能让getters本身返回另一个函数
getters : {
stuByID(state){
return id => { return state.students.find(s => s.id ===id}
}
}
Vuex 的store状态更新的唯一方式,提交Mutation,
Mutation主要包括两部分:
字符串的事件类型(type) 回调函数(handler),该回调函数的第一个参数就是state,
Mutations定义方式,通过Mutations更新
传递参数payload(可以是对象)
Mutations两种提交风格
注意,不要在Mutations中进行异步操作,否则有可能造成监听不到。
Actions: actions是用来进行异步操作的,
自带context,和store对象具有相同方法和属性的对象,也就是说,可以通过context去进行commit相关的操作,也可以获取context.state等。
Action返回Promise
Module: Vue使用单一状态树,那么意味着很多状态都会交给vuex管理,当变得复杂时,store对象就有可能变得非常臃肿,为了解决这个问题,每个模块拥有自己的state,mutations,actions,getters等
项目结构抽离

你可能感兴趣的:(笔记)