第二十章 Vue组件通信之父子通信

ops/2024/11/1 3:29:51/

目录

一、引言

二、组件关系分类

三、组件通信的解决方案

3.1. 父子通信流程图

3.2. 父组件通过 props 将数据传递给子组件

 3.2.1. 代码App.vue 

3.2.2. 代码MySon.vue 

3.3. 子组件利用 $emit 通知父组件修改更新 

​编辑3.3.1. 代码App.vue

3.3.2. 代码MySon.vue 

3.3.3. 运行效果 

四、总结


一、引言

在使用Vue框架的日常开发中,我们会遇到各种场景需求涉及到到组件通信, 也就是指组件与组件之间的数据传递。

在Vue中组件之间会存在多种不同的组件关系,因此组件通信的方案也有所不同。

二、组件关系分类

1. 父子关系

2. 非父子关系

三、组件通信的解决方案

3.1. 父子通信流程图

3.2. 父组件通过 props 将数据传递给子组件

 3.2.1. 代码App.vue 

<template><div class="App" style="border:3px solid #000;margin:10px">我是App组件<!-- 给组件标签以添加属性的方式去传值 --><MySon :target="myTarget"></MySon></div>
</template><script>
import MySon from './components/MySon.vue'
export default {data () {return {myTarget: '不畏将来,不念过往,把握当下。人生是一场漫长的修行,持续拼搏努力,未来一定会好的!'}},components: {MySon: MySon}
}
</script><style></style>

3.2.2. 代码MySon.vue 

<template><div class="son" style="border:3px solid #000;margin:10px">我是MySon组件{{ target }}</div>
</template><script>
export default {// 通过props进行接收props: ['target']
}
</script><style></style>

3.3. 子组件利用 $emit 通知父组件修改更新 


3.3.1. 代码App.vue

<template><div class="App" style="border:3px solid #000;margin:10px">我是App组件<!-- :target="myTarget" 给组件标签以添加属性的方式去传值 --><!-- 父组件对消息进行监听 --><MySon :target="myTarget" @changeTarget="handleChange"></MySon></div>
</template><script>
import MySon from './components/MySon.vue'
export default {data () {return {myTarget: '不畏将来,不念过往,把握当下。人生是一场漫长的修行,持续拼搏努力,未来一定会好的!'}},methods: {// 提供处理函数和逻辑handleChange (newTarget) {console.log(newTarget)this.myTarget = newTarget}},components: {MySon: MySon}
}
</script><style></style>

3.3.2. 代码MySon.vue 

<template><div class="son" style="border:3px solid #000;margin:10px">我是MySon组件{{ target }}<button @click="changeFn">修改我的目标</button></div>
</template><script>
export default {// 通过props进行接收props: ['target'],methods: {changeFn () {// 1. 通过$emit,向父组件发送消息通知this.$emit('changeTarget', '学海无涯,把握每分每秒')}}
}
</script><style></style>

3.3.3. 运行效果 

四、总结

1. 两种组件关系分类和对应的组件通信方案

父子关系 → props & $emit

非父子关系 → provide & inject 或 eventbus

通用方案 → vuex

2. 父子通信方案的核心流程

2.1 父传子props:

① 父中给子添加属性传值 ② 子props 接收 ③ 子组件使用

2.2 子传父$emit:

① 子$emit 发送消息 ②父中给子添加消息监听 ③ 父中实现处理函数


http://www.ppmy.cn/ops/130019.html

相关文章

C++游戏开发中的多线程处理是否真的能够显著提高游戏性能?如果多个线程同时访问同一资源,会发生什么?如何避免数据竞争?|多线程|游戏开发|性能优化

目录 1. 多线程处理的基本概念 1.1 多线程的定义 1.2 线程的创建与管理 2. 多线程在游戏开发中的应用 2.1 渲染与物理计算 3. 多线程处理的性能提升 3.1 性能评估 3.2 任务分配策略 4. 多线程中的数据竞争 4.1 数据竞争的定义 4.2 多线程访问同一资源的后果 4.3 避…

安卓多点触控

对于普通的点击事件&#xff0c;调用View对象的setOnClickListener()方法注册点击事件的监听即可&#xff0c;但是如果要处理更加复杂的触控事件时&#xff0c;这种方式就无法满足我们的要求了&#xff0c;此时我们就可以监听所有触摸事件&#xff0c;自行处理触摸事件。 1. 注…

谷歌seo发外链真的能提升排名吗?

那肯定是可以的&#xff0c;但很多SEO新人总以为&#xff0c;只要发几条外链&#xff0c;排名就会蹭蹭往上涨。这样的想法太过理想化了。虽然外链确实是提升排名的重要因素之一&#xff0c;但这并不意味着你随便发几条外链就能见效 优质的外链重要&#xff0c;但前提你能找到多…

GFF: Gated Fully Fusion for Semantic Segmentation门控融合语义分割-论文阅读笔记

摘要&#xff1a; 语义分割通过对每个像素密集预测其类别&#xff0c;生成对场景的全面理解。深度卷积神经网络的高级特征已经在语义分割任务中证明了它们的有效性&#xff0c;然而高级特征的粗分辨率经常导致对小/薄物体的结果不佳&#xff0c;而这些物体的细节信息非常重要。…

多浏览器同步测试工具的设计与实现

在做Web兼容测试时&#xff0c;测试人员往往需要在不同浏览器上重复执行相同的操作。 现有自动化录制手段&#xff0c;其实是后置的对比&#xff0c;效率与反馈都存在延迟&#xff0c;执行过程相对是黑盒的&#xff0c;过程中如果测试人员没细化到具体的校验点&#xff0c;即使…

JVM 类加载器

字节码的结构 魔数u4 cafe babe 版本u4 52 java8 常量池计数器u2 从1开始&#xff0c;0索引留给不需要的情况 常量池 表 #1 -> #计数器-1 类标识符 u2 public final abstrat class annotion interface 之类 类索引u2 名字 父类索引u2 父类名字 接口计数器 u2 接口数…

HTTP的初步了解

目录 前言 一、HTTP协议的基本概念 1.1、请求格式 1.2、响应格式 二、HTTP链接问题 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; HTTP协议是超文本传输协议 HTTP的短连接&#xff1a;建立连接——数据传输——关闭连接 HTTP的长连接&#xff1a;…

Go语言八股(Ⅲ)

什么是rune类型&#xff1f; rune类型是Go语言的一种特殊数字类型&#xff0c;在builtin/builtin.go文件中&#xff0c;它的定义为&#xff1a;type rune int32&#xff1b;官方对它的解释是&#xff1a;rune是类型int32的别名&#xff0c;在所有方面都等价于它&#xff0c;用…