当前位置: 首页 > Web前端 > vue.js

关于Vue的组件通信问题

时间:2023-04-01 01:45:52 vue.js

什么是Vue组件?组件是Vue.js最强大的特性之一。组件可以扩展HTML元素,封装可重用代码。在高层次上,组件是Vue.js的编译器添加特殊功能的自定义元素。在某些情况下,组件也可以采用原生HTML元素的形式,并使用is属性进行扩展。组件通信包括:父子组件之间的通信和兄弟组件之间的通信。在组件化的系统构建中,组件之间的通信必不可少。父组件-->子组件1.属性设置父组件的关键代码如下:1关键子组件代码如下:1exportdefault{2name:'child',3props:{4child-msg:String5}6};child-msg是父组件为子组件设置的附加属性值,该属性值需要在子组件中的props中设置。child-msg变量可以直接在子组件中使用。2.子组件调用父组件。子组件通过$parent获取父组件,通过$root获取顶层组件。子组件-->父组件1.发送事件/监听事件在子组件中的一个函数中发送事件:this.$emit('toparentevent','data');父组件监听事件://methods中接收方法:{ toparentevent(msg){//msg为传入的数据console.log(msg)}}parentevent为子组件自定义发送事件名称,组件中的父@toparente2.父组件直接获取子组件的属性或方法,并给要调用的子组件命名。将名称设置为子组件的ref属性的值。在父组件中,通过$refs.componentname获取子组件,而子组件也可以称为属性和方法。//获取child.propertythis.$refs.aName.child//调用child.method()this.$refs.aName.child()父组件可以通过$children(的子组件的)获取所有直接子组件父组件子组件不是直接子组件)。请注意$children不保证顺序,也不是反应性的。多级父子组件通信:在Vue1.0中实现了$broadcast和$dispatch两个方法,当子组件(或父组件)监听时,广播(或dispatch)给子组件(或父组件)到事件并返回true时,它??将继续向祖父母和孙子组件广播(或派发)事件。但是这个方法在Vue2.0中已经被移除了。其实这两个方法的内部实现还是使用$parent和$children来逐级遍历子节点或者查询父节点。当指定的组件名被访问时,会调用$emit触发指定的事件。复杂的单页应用数据管理当应用足够复杂时,请使用vuex进行数据管理。