春招冲刺(八):组件间通信总结
创始人
2024-05-29 14:03:41
0

组件间通信总结

Q1:各类组件如何通信?

1、父子组件间通信

  • 子组件通过 props 属性来接受父组件的数据,然后父组件在子组件上注册监听事件,子组件通过 emit 触发事件来向父组件发送数据。
  • 通过 ref 属性给子组件设置一个名字。父组件通过 $refs 组件名来获得子组件,子组件通过 $parent 获得父组件,这样也可以实现通信。
  • 使用 provide/inject,在父组件中通过 provide提供变量,在子组件中通过 inject 来将变量注入到组件中。不论子组件有多深,只要调用了 inject 那么就可以注入 provide中的数据。

2、跨代组件间通信

  • 跨代组件间通信其实就是多层的父子组件通信,同样可以使用上述父子组件间通信的方法,只不过需要多层通信会比较麻烦。
  • 使用上述的6种方法的$attrs / $listeners方法。

3、兄弟组件间通信

  • 通过 $parent + $refs 以父组件为中间人来获取到兄弟组件,也可以进行通信。

4、任意组件间通信

  • 使用 eventBus ,其实就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件。它的本质是通过创建一个空的 Vue 实例来作为消息传递的对象,通信的组件引入这个实例,通信的组件通过在这个实例上监听和触发事件,来实现消息的传递。

Q2:若父组件有个getName()函数,如何获得子组件的值?

  • 答题思路:父组件如何获得子组件值?
    • 可以通过this.$refs.子组件名称.数据名称来获得
    • 可以通过this.$children[index].数据名称 获得
    • 可以通过eventBus访问,子组件先把数据用emit放入,父组件用emit放入,父组件用emit放入,父组件用on取
    • 可以通过在子组件用v-on绑定一个事件,在子组件内使用$emit触发这个事件,触发的时候同时传递参数

1 props / $emit

props

适用:父组件向子组件传值

特点:

  • props只能是父组件向子组件进行传值,props使得父子组件之间形成一个单向的下行绑定。子组件的数据会随着父组件的更新而响应式更新。
  • props可以显示定义一个或一个以上的数据,对于接收的数据,可以是各种数据类型,同样也可以是传递一个函数。
  • props属性名规则:若在props中使用驼峰形式,模板中标签需要使用短横线的形式来书写。

用法:

  • 父组件内调用子组件,通过v-bind=变量名,进行传参,v-bind简写:
  • 子组件通过props: ["变量名1", "变量名2"]进行接收参数,模版里直接使用
// 父组件
data() {msgData: "父组件数据";
},
methods: {myFunction() {console.log("vue");}
},
// 子组件

{{msg}}

export default {props: ["msg", "fn"] };

$emit

适用:子组件向父组件传值

用法:

  • 在子组件中绑定一个事件,在事件里写this.$emit('写在父组件的函数名字', 要传的值)
  • 父组件在子组件注册一个@父组件触发函数(传的值){},@为v-on的简写,这样就可以使用这个传的值了
// 父组件

//子组件

2 ref / $refs

适用:

  • 父组件适用子组件的方法和数据

使用:

  • 数据:父组件调用this.refs.child,如果是访问变量this.refs.child,如果是访问变量 this.refs.child,如果是访问变量this.refs.子组件名称.子组件data里的变量
  • 方法:访问变量 this.$refs.子组件名称.子组件methods里的方法

3 EventBus

适用:多个组件访问一个数据

使用

  • 放数据:EventBus.$emit
  • 拿数据:EventBus.$on
// 需要创建一个event-bus.jsimport Vue from 'vue'
export const EventBus = new Vue()
//组件1(放数据):在方法里使用
EventBus.$emit('addition', {num:this.num++
})
//组件2(接收数据)
EventBus.$on('addition', param => {this.count = this.count + param.num;//使用num变量})

4 依赖注入(provide / inject)

适用:

父对子传参,一般用于深层的传参,可以避免一层层传参。

使用:

provide(发生)和inject(接收)是vue提供的两个钩子

//父组件
provide() {return {num: this.num};
}
//子组件
inject: ['num']

5 $parent / $children

适用:

  • $parent 子组件获取父组件值
  • $children 父组件获得子组件的值
    • 在组件中使用$children拿到的是所有的子组件的实例,它是一个数组,并且是无序的

6 $attrs / $listeners

适用:

  • $attrs:父给子、孙传props,可以避免多次写传参,只要绑定属性,下面一层就可以收到上层的参数
  • $listeners:孙给爷传参数,调用父组件方法

使用:

  • 子组件:v-bind="$attrs" v-on="$listeners",孙组件就可以用爷组件的数据
//爷


// 父


// 子


参考链接

  • https://blog.csdn.net/jiangjunyuan168/article/details/122640925?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167807140216800182189905%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=167807140216800182189905&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-122640925-null-null.142v73insert_down2,201v4add_ask,239v2insert_chatgpt&utm_term=vue组件通信&spm=1018.2226.3001.4187

相关内容

热门资讯

会主持词开场白 会主持词开场白  篇一  尊敬的各位领导、各位来宾  各位公司同仁:  大家下午好!  非常高兴和大...
中国人寿保险公司晨会主持词 中国人寿保险公司晨会主持词  主持词由主持人于节目进行过程中串联节目的串联词。以下是小编整理的中国人...
公司中秋晚会主持词 关于公司中秋晚会主持词  主持词分为会议主持词、晚会主持词、活动主持词、婚庆主持词等。在当今不断发展...
小学生职位竞选词 小学生职位竞选词  个人觉得竞选中队长,你已经很清楚中队长需要做的事情了,那么就从每一个任务来发展一...
在结婚典礼上的精彩幽默主持词 在结婚典礼上的精彩幽默主持词各位来宾:大家好!奉新郎新娘之命,我来主持今天的婚礼。为什么新郎新娘一定...
婚礼主持人搞笑台词 婚礼主持人搞笑台词  各位来宾:  大家好!奉新郎新娘之命,我来主持今天的婚礼,婚礼主持人搞笑台词。...
幼儿园运动会主持稿 幼儿园运动会主持稿  篇一:幼儿园运动会主持词  踏着春天的脚步,踩着春风的节拍,春天已经来到我们中...
小学庆元旦活动主持词 小学庆元旦活动主持词  利用在中国拥有几千年文化的诗词能够有效提高主持词的感染力。在当今社会生活中,...
爵士舞蹈串词主持词   爵士舞即美国现代舞,是一种急促又富动感的节奏型舞蹈,是属于一种外放性的舞蹈,不像古典芭蕾舞或现代...
幼儿园元旦节目主持词   齐x:亲爱的爸爸妈妈  周x:亲爱的爷爷奶奶  王x:亲爱的老师  李x:亲爱的小朋友们  合:...
运动会运动员赞美词 运动会运动员赞美词1.赞运动员是我们的目标,是我们的信念,在清凉的初秋,在喧嚣的田径场上,。你们点燃...
黄梅戏晚会的主持词 黄梅戏晚会的主持词  戏迷欢庆四一八 黄梅又添新奇葩  ——喜迎418暨欢庆黄梅戏艺术团成立的晚会台...
学校秋季运动会开幕主持词 学校秋季运动会开幕主持词(精选6篇)  主持词要注意活动对象,针对活动对象写相应的主持词。在当今社会...
庆祝五四文艺晚会主持稿 庆祝五四文艺晚会主持稿  男:尊敬的各位领导、来宾  女:电视机前的观众朋友们  合:大家好  男:...
最新品鉴会主持词 最新品鉴会主持词  鉴会现在开始!  女:各位领导,各位嘉宾  男:女士们、先生们  合:大家下午好...
端午节晚会主持词 精选端午节晚会主持词(通用8篇)  根据活动对象的不同,需要设置不同的主持词。时代不断在进步,很多场...
论坛一周年庆典晚会主持词 论坛一周年庆典晚会主持词  主持词是由主持人于节目进行过程中串联节目的串联词。如今的各种演出活动和集...
最新研讨会主持词 最新研讨会主持词(通用11篇)  主持词分为会议主持词、晚会主持词、活动主持词、婚庆主持词等。在现在...
重阳节的主持词 重阳节的主持词  主持词分为会议主持词、晚会主持词、活动主持词、婚庆主持词等。在人们越来越多的参与各...