组件通信方案、父传子、子传父
组件通信是指 组件与组件 之间的数据传递。
组件的数据是独立的,无法直接访问其他组件的数据,想用其他组件的数据,需要通过组件通信方案。
组件关系分类:父子关系、非父子关系
组件通信方案:
父子关系:props(父传子) 和 $emit(子传父)
非父子关系:① provide & inject
② eventbus
父子关系 与 非父子关系 的通用通信方案:Vuex(适合复杂业务场景)
详细演示:
1. 父子关系——父传子:
①父组件中给 template 中引入的组件标签 添加属性的方式 传值(myTitle 为父组件的 data 函数中定义的变量,如:myTitle = ' 黑马程序员 ')
<Son :title = "myTitle"></Son>
②子组件中 通过 props 进行接收
<script>
export default {
props : [ 'title' ] // 属性名 title 要与 父组件 中 给子组件标签添加的属性值 title 保持一致,表示接受过来的是 黑马程序员
}
</script>
③子组件中渲染使用
<template>
<div>
{{ title }}
</div>
</template>
2. 父子关系——子传父:
子组件利用 $emit 通知父组件,进行修改更新:子组件中可以准备一个按钮,在按钮的点击事件里,通过 $emit 来触发事件,给父组件发送消息通知;一旦发送了消息通知之后,父组件需要对子组件所发送的消息进行监听,比如子组件的 $emit 中起名叫 changeTitle,那么父组件就需要对 changeTitle 进行监听,监听的目的就是为了收到传过来的消息,并且父组件提供一个处理函数,在处理函数的形参中就可以拿到传过来的消息,拿到后就可以更新到 myTitle 里面去了。
①子组件中定义按钮,注册点击事件,点击事件中通过 $emit 向父组件发送消息通知:
②父组件对消息进行监听
// changeTitle:跟子组件中自定义的事件名 同名;handleChange:父组件的处理函数,名字自定义,然后在父组件的methods中实现该函数的逻辑,在形参中就可以拿到 传智教育,再更新到myTitle 里。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异