vuex的四种状态:案例分析
引入各模块
mutations
& actions
state
& getters
state
的使用【一般是从store.getters
中获取数据】
方法调用
vuex
官方给了我们一个更简单的方式来使用, 就是 {mapState, mapMutations, mapActions, mapGetters}
模块介绍
state
:页面状态管理容器对象。集中存储Vue components
的data
对象的零散数据,全局唯一,以进行统一的状态管理。页面显示所需的数据从该对象中进行读取。mutation
:状态改变操作方法。它是Vuex
修改state
的唯一推荐方法,其他修改方式在严格模式下将会报错。该方法只能进行同步操作,且方法名只能全局唯一。通过$store.commit
调用其中的方法。actions
:操作行为处理模块。负责处理Vue Components
接收到的所有交互行为。包含同步/异步操作,支持多个同名方法,按照注册的顺序依次触发。向后台API
请求的操作就在这个模块中进行,包括触发其他action
以及提交mutation
的操作。该模块提供了Promise
的封装,以支持链式触发。通过$store.dispatch
触发方法。getters
:Vue Components
通过该方法读取全局state
对象。
小结:
Vue
组件Components
接收交互行为,调用dispatch
方法触发action
相关处理,若页面状态需要改变,则调用commit
方法提交mutation
修改state
,通过getters
获取到state
新值,重新渲染Vue Components
,界面随之更新。
EventBus
在Vue
中可以来作为事件的沟通桥梁,就像是所有组件共用相同的事件中心,可以向该中心注册发送事件或接收事件,所以组件都可以上下平行地通知其他组件;但也就是太方便所以若使用不慎,就会造成难以维护的灾难,因此才需要更完善的Vuex
作为状态管理中心,将通知的概念上升到共享状态层次。(标题链接可点开看看,该文有一部分内容提到了EventBus
;这里就不另外写了)