首页 > 编程知识 正文

vue同级组件通信(父子组件通信)

时间:2023-05-06 09:05:33 阅读:84243 作者:2846

问题:vue中父子组件、同级组件间如何通信?

vue中央事件总线这种方法适用于任何情况下的父子组件通信,同级别的组件通信相当于组件通信之间的万金油。 但是,在多人合作的情况下,代码的维护性很低。

在vue-cli上使用集中的事件管理机制:

步骤1 :在src中创建新的emit/emit.js, js文件的内容:

导入从' vue ';

varEmit=newvue({};

导出{2}

Emit

}

在步骤src/main.js中引入

从import './emit/emit.js '

Vue.prototype.Emit=Emit;

示例: index.vue是父组件、两个子组件header.vue和footer.vue。

在mounted的生命周期中用this.Emit.$on ()进行监听。

在destroyed生命周期中,在this.Emit.$off (中解除绑定。 必须解除事件的绑定!

//父组件: index.vue :

模板

div类='索引扭曲'

标头/标头

福斯特/福斯特

/div

/模板

脚本类型='文本/Javascript '

从导入头'./头. vue ';

从导入者'./导入者. vue ';

导出默认值{

数据()。

返回

索引:0

}

(、

已安装()

this.emit.$ on ('来自标头',this.indexFormHeader );

this.emit.$ on ('来自追随者',this.indexFromFooter );

(、

//注意:销毁组件时,必须解除绑定事件:

已破坏

this.emit.$ off (从头);

this.emit.$ off (从移动者);

(、

组件:

标头

(、

方法:

indexformheader (值) {

控制台日志(来自头);

控制台日志(值)

(、

indexFromFooter ()

console.log (从脚本) )。

}

}

}

/脚本

样式类型='文本/CSS '

/样式

次组件header.vue

通过this.Emit.$emit ()传递数据

//子组件header.vue

模板

div类=' headerpagewrap '

div @click='headerEmit'Emitdiv

/div

/模板

脚本类型='文本/Javascript '

导出默认值{

数据()。

返回

索引:0

}

(、

已安装()

this.Emit.$on('headertofooter ',this.headerFromFoot ) )。

(、

组件:

(、

方法:

头艾米特()

this.emit.$ emit ('来自头',{值: ' 123 ' ); //能够传递数据

(、

headerFromFoot (

控制台日志(从);

}

}

}

/脚本

样式类型='文本/CSS '

/样式

次组合footer.vue

//次组合footer.vue

模板

div类='福特erpagewrap '

div @click='footerEmit'Emitdiv

div @ click=' footeremittoheader ' emit div

/div

/模板

脚本类型='文本/Javascript '

导出默认值{

数据()。

返回

索引:0

}

(、

已安装()

(、

组件:

(、

方法:

福斯特艾米特()

this.emit.$ emit (从动画师); //不传递数据

(、

福特里米蒂托赫德

this.emit.$ emit (头部机器人); //不传递数据

}

}

}

/脚本

样式类型='文本/CSS '

/样式

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。