VUE--组件通信(父子)

1、什么是组件通信

        组件通信就是指组件与组件之间的数据传递。因为组件的数据是独立的,无法直接访问其他组件的数据,想获取其他组件的数据,就需要用到组件通信。

2、组件关系分类(如图)

        ● 父子关系(props 和 $emit

        ● 非父子关系(provide & inject;eventbus

        通用解决方案:Vuex--适合于复杂业务场景

3、父组件向子组件传递数据

        父组件利用props向子组件传递数据

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

// 父组件
<template><div class="main"><!-- 1、给子组件以自定义属性方式传值,btnName为自定义属性 --><my-button :btnName="name"></my-button></div>
</template><script>
import myButton from "./myButton.vue";
export default {data() {return {name: "父组件传值",};},components: { myButton },
};
</script>
// 子组件
<template><div><!-- 2、子组件模板中直接使用 --><button>{{ btnName }}</button></div>
</template><script>
export default {data() {return {};},// 2、子组件内部通过props接收props: {btnName: String,},
};
</script>

        结果如下--按钮名称为“父组件传值”:

 4、子组件向父组件传递数据

        子组件利用$emit 通知父组件,对数据进行更新

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

// 子组件
<template><div><button @click="changBtnName">{{ btnName }}</button></div>
</template><script>
export default {data() {return {};},props: {btnName: String,},methods: {changBtnName() {// 1、$emit 触发事件,给父组件发送消息通知this.$emit("changBtnName", "修改名称");},},
};
</script>
// 父组件
<template><div class="main"><!-- 2、父组件监听事件 --><my-button :btnName="name" @changBtnName="handleChange"></my-button></div>
</template><script>
import myButton from "./myButton.vue";
export default {data() {return {name: "父组件传值",};},components: { myButton },methods: {handleChange(val) {// 3、提供处理参数,此处的形参(val)代表子组件传递过来的参数this.name = val;},},
};
</script>

        结果如下--点击子组件的按钮后,名称更新为“修改名称” 

 

5、父子组件之间传值还可使用 ref & refs

        详见以下链接:VUE--- ref & refs-CSDN博客

扩展: 

 1、什么是prop

        ● 定义:组件上注册的一些自定义属性

        ● 作用:向子组件传递数据

        ● 特点:可以传递任意数量、任意类型的prop

2、prop校验

        作用:为组件的prop指定验证要求,不符合要求的,控制台就会有错误提示,帮助开发者快速发现错误。

        类型:

                a、类型校验

                b、非空校验

                c、默认值校验

                d、自定义校验

prop: {校验的属性名: {type: 类型, // Number, Boolean, Object, String ...required: true, // 表示父组件必须传递这个值default: 默认值, // 默认值如果是数组或对象,要写成函数格式,函数中返回数组或对象validator(value) {// 自定义校验规则return 是否通过校验}}
}    

3、prop & data 的区别 

        ● data的数据是自己的,可以随便修改

        ● prop的数据是外部的,不能直接修改,要遵循单项数据流

4、单向数据流

        父级prop的数据更新,会向下流动,影响子组件。这个数据流动是单向的,无法反向流动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/416410.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot的yml多环境配置3种方法

文章目录 SpringBoot的yml多环境配置3种方法1、多个yml文件1.1、创建多个配置文件applicaiton.yml中指定配置 2、单个yml文件3、在pom.xml中指定环境配置3.1、创建多个配置文件3.2、在application.yml中添加多环境配置属性3.3、在pom.xml中指定使用的配置3.4、问题&#xff1a;…

Java中打印图案最常用的25个图案程序

Java是公认的最流行的编程语言&#xff0c;因为它的简单性和多功能性。还可以使用它开发各种应用程序&#xff0c;包括Web、移动和桌面应用程序。此外&#xff0c;Java为开发人员提供了强大的工具来轻松高效地创建复杂的程序。Java最有前途的特性之一是它能够创建可以以特定格式…

[已解决]前端使用el-upload,后端使用文件上传阿里云报错:异常信息:java.lang.NullPointerException: null

前端使用el-upload&#xff0c;后端使用文件上传阿里云报错&#xff1a; 报错原因&#xff1a;前端image参数未传进去 解决方法&#xff1a;在el-upload添加属性 name"image" 文件传进去了&#xff01;

杜卡迪Panigale v4 SP2、Street Fighter v4 SP正式发布,购车送GP观赛

最新款杜卡迪的Panigale v4 SP2、Street Fighter v4 SP国内正式上市&#xff0c;售价分别是382500元和310500元&#xff0c;Panigale售价比老款降低了2.55万元&#xff0c;而街霸的SP版则是国内首次上市。 SP版一直都是杜卡迪的限量款&#xff0c;标榜着高性能、高配置&#xf…

三、RHCE--时间服务器

三、RHCE--时间服务器 一、简介二、软件安装三、配置时间服务器客户端四、配置时间服务器服务端五、示例&#xff1a; 一、简介 NTP 是网络时间协议&#xff08;Network Time Protocol&#xff09;的简称&#xff0c;通过 udp 123 端口进行网络时钟同步。 Chrony是一个开源自由…

C语言——程序的版式

前言 版式虽然不会影响程序的功能&#xff0c;但会影响可读性。程序的版式追求清晰、美观&#xff0c;是程序风格的重要构成因素。可以把程序的版式比喻为“书法”。好的“书法”可让人对程序一目了然&#xff0c;看得兴致勃勃。差的程序“书法”如螃蟹爬行&#xff0c;让人看得…

JOSEF约瑟 时间继电器DS-112 220VDC 0.2~3.5S 柜内固定安装,板前接线

系列型号&#xff1a; DS-111时间继电器&#xff1b;DS-112时间继电器&#xff1b; DS-113时间继电器&#xff1b;DS-111C时间继电器&#xff1b; DS-112C时间继电器&#xff1b;DS-113C时间继电器&#xff1b; DS-114时间继电器&#xff1b;DS-115时间继电器&#xff1b; DS-1…

postgresql安装

一、官方找到对应的版本,下载 官方下载地址(rpm方式安装):PostgreSQL: Linux downloads (Red Hat family) PostgreSQL: The worlds most advanced open source database 滑到最下面

深度学习记录--mini-batch gradient descent

batch vs mini-batch gradient descent batch&#xff1a;段&#xff0c;块 与传统的batch梯度下降不同&#xff0c;mini-batch gradient descent将数据分成多个子集&#xff0c;分别进行处理&#xff0c;在数据量非常巨大的情况下&#xff0c;这样处理可以及时进行梯度下降&…

爬虫之牛刀小试(八):爬取微博评论

今天爬取的是微博评论。 可以发现其特点是下一页评论的max_id在上一页中。 于是代码如下&#xff1a; import requests import json import re import time headers {User-Agent: ,"Cookie": "","Referer": "https://m.weibo.cn/detail/4…

iphone5s基带部分电源部分主主电源供电及

时序: 1.,基带电源的供电&#xff0c;基带电源也叫pmu。 首先时序图说电池提供供电&#xff0c;电池是J6接口&#xff0c;视频习惯把接口称之为座子。查U2_RF芯片&#xff0c;发现供电信号为PP_BATT_VCC_CONN&#xff0c;但是没查到跟电池座子有关系&#xff0c;电池座子写的是…

TCP 的三次握手和四次挥手

Java 面试题 TCP 三次握手 第一次握手&#xff1a;客户端向服务端发送SYN包。报文中标志位SYN1&#xff0c;序列号seqx&#xff08;x为随机整数&#xff09;。此时客户端进入了 SYN_SEND 同步已发送状态。 第二次握手&#xff1a;服务端回复客户端SYNACK包。报文中标志位SYN1&…