状态管理
1.为什么要有状态管理??
答:大型应用往往有多个组件封装而成,会遇到多个组件共享状态的情况,单向数据流的简洁性被破坏。主要问题为:1.多个视图依赖同一状态;2.不同试图的行为需要改变同一状态。
2.使用:
①安装好vuex
②创建一个store仓库,仓库中包括:state(状态),mutations(方法),module(可以将仓库分模块);
③同注册路由方式一样,将store挂载到vue实例中;
④在其他组件中调用状态和方法:this.$store.state.prop调用特定的状态;this.$store.commit('fun')提交状态变更,fun方法在mutations中声明。
事件总线EventBus
事件总线可以把相应的事件定义为全局事件,利用$EventBus调用事件 完成不同组件之间的事件调用,或者是事件传递。
使用方法1:首先,在项目中注册EventBus
mainjs中实例化EvenBus;
Vue.prototype.$EventBus = new Vue();
然后,在相应的组件中触发事件
this.$EventBus.$emit("shareFile", [row]);
//shareFile为事件名称,[row]为参数
最后在需要接受的组件中接受事件获取参数并执行
this.$EventBus.$on("shareFile", (file) => {
this.dialogShareFile.visible = true;
this.dialogShareFile.shareFile = file;
});
this.$EventBus.$off("shareFile");//为减少冗余,一般在实例摧毁前需要清除事件监听