Vue基于$attrs及$listeners实现隔代通信

简介: Vue基于$attrs及$listeners实现隔代通信

所谓隔代通信就是A 与C的通信

A -> B -> C

d24.3.png

代码实例

A.vue

<template>

<div id="app">
<!-- 此处监听了事件,可以在C组件中直接触发 -->
<b-child
nameToB="nameToB"
nameToC="nameToC"
@buttonClick="buttonClick"
>
</b-child>
</div>
</template>


<script>
import BChild from "./B.vue";

export default {
data() {
return {};
},

components: { BChild },

methods: {
buttonClick() {
console.log("buttonClick...");
}
}
};
</script>

B.vue

<template>
<div>
<h1>B组件</h1>
<p>name: { {nameToB}}</p>
<p>$attrs: {<!-- -->{$attrs}}</p>
<hr>
<!-- C组件中能直接触发buttonClick的原因在于 B组件调用C组件时 使用 v-on 绑定了$listeners 属性 -->
<!-- 通过v-bind 绑定$attrs属性,C组件可以直接获取到A组件中传递下来的props(除了B组件中props声明的) -->
<c-child v-bind="$attrs&#34; v-on&#61;&#34;$listeners"></c-child>

</div>
</template>

<script>
import CChild from './C.vue';

export default {
props: ['nameToB'],

components: { CChild },

data () {
return {};
},

// inheritAttrs: false,
};
</script>

C.vue

<template>
<div>
<h1>C组件</h1>
<p>name: { {nameToC}}</p>
<p>$attrs: {<!-- -->{$attrs}}</p>
<button @click="buttonClick">点击C按钮</button>
</div>
</template>

<script>
export default {
// inheritAttrs: false,

props: ['nameToC'],

data () {
return {};
},

methods: {
buttonClick(){
this.$emit('buttonClick');
}
}
};
</script>

最终,通过B实现了A与C的通信

d24.4.png


参考

Vue v2.4中新增的a t t r s 及 attrs及attrs及listeners属性使用教程


            </div>
目录
相关文章
|
6月前
|
缓存 JSON JavaScript
浅拷贝与深拷贝区别之技术方案及应用实例解析
浅拷贝与深拷贝是编程中对象复制的两种核心方式。本文先阐述两者的概念,再通过代码示例(如JavaScript的`Object.assign()`和Python的切片操作实现浅拷贝,或`JSON.parse()`与`copy.deepcopy()`实现深拷贝)展示区别,并总结常见场景应用,如游戏状态保存和数据快照管理。掌握它们的选择与实现,可有效提升代码性能与可靠性。附面试资料链接供学习:[点此获取](https://pan.quark.cn/s/4459235fee85)。
422 1
|
人工智能
2025年人工智能与可持续发展国际学术会议 2025 International Conference on Artificial Intelligence and Sustainable Development (ICAISD 2025)
2025年人工智能与可持续发展国际学术会议 2025 International Conference on Artificial Intelligence and Sustainable Development (ICAISD 2025)
752 7
|
存储 Unix 数据挖掘
RAID5数据恢复—zfs文件系统下重组RAID5阵列的方法详解
RAID5数据恢复环境: 一台存储上有一组由12块SCSI硬盘(11块数据盘+1块热备盘)组建的RAID5磁盘阵列,FreeBSD操作系统+zfs文件系统。 RAID5故障:
|
10月前
|
消息中间件 Kafka
【赵渝强老师】Kafka生产者的消息发送方式
Kafka生产者支持三种消息发送方式:1. **fire-and-forget**:发送后不关心结果,适用于允许消息丢失的场景;2. **同步发送**:通过Future对象确保消息成功送达,适用于高可靠性需求场景;3. **异步发送**:使用回调函数处理结果,吞吐量较高但牺牲部分可靠性。视频和代码示例详细讲解了这三种方式的具体实现。
353 5
|
9月前
|
运维 安全 数据可视化
如何选择高效教务系统?推荐“一秒教务”——独立部署、即开即用,功能全面覆盖
本文探讨如何选择高效的教务系统,并重点推荐“一秒教务”。该系统支持独立部署,保障数据安全;功能全面覆盖招生、排课、考勤、财务等环节;界面简洁易用,部署快速。适用于K12学校、培训机构、职业教育等多种场景,对比传统系统优势明显,如即开即用、扩展性强。文章还提供了选型建议和落地步骤,助力教育机构实现高效管理与数字化转型。
307 0
|
数据安全/隐私保护 数据格式
高效的数据脱敏策略
在数字化时代,数据安全和隐私保护变得尤为重要。数据脱敏作为一种有效的数据保护手段,可以帮助企业降低数据泄露风险,同时遵守相关的法律法规。本文将介绍三种常见的数据脱敏方案,为您提供实用的技术干货。
380 1
|
Docker 容器
如何查看docker版本|12
如何查看docker版本|12
492 3
|
机器学习/深度学习 人工智能 小程序
AI把爱豆变胖视频火遍B站,我们找到了背后的技术团队:你是怎么把刘亦菲变胖的?
AI把爱豆变胖视频火遍B站,我们找到了背后的技术团队:你是怎么把刘亦菲变胖的?
1230 0
|
运维 监控 安全
数字化安全生产平台 DPS 重磅发布
十四五规划下,各行各业全面加速数字化转型与升级。随着企业数字化业务规模变大,迭代速度加快,系统复杂度越来越高,如何保障业务稳定性这一话题也变得愈发重要。
数字化安全生产平台 DPS 重磅发布
|
机器学习/深度学习 存储 人工智能
如何构建可持续的ChatGPT高性能服务器端架构?
与之前的版本相比,GPT-4最大的改进是其多模态(multimodal)能力——它不仅能够阅读文字,还能识别图像。值得注意的是,虽然之前有消息称GPT-4拥有100万亿个参数,但OpenAI并没有证实这个数字。与其相比,OpenAI更强调GPT-4的多模态能力以及其在各种测试中的表现。
1115 0
如何构建可持续的ChatGPT高性能服务器端架构?