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的数据更新,会向下流动,影响子组件。这个数据流动是单向的,无法反向流动。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python基础012】列表的用法

列 表 用 于 存 储 任 意 数目、任意类型的数据集合。在 Python 中&#xff0c;用方括号&#xff08;[]&#xff09;来表示列表&#xff0c;并用逗号来分隔其中的元素。 1、创建列表 &#xff08;1&#xff09;基本语法创建 a [] 创建整数列表&#xff1a; a [1, 2, 3, 4] …

Docker 47 个常见故障的原因和解决方法

本文针对Docker容器部署、维护过程中&#xff0c;产生的问题和故障&#xff0c;做出有针对性的说明和解决方案&#xff0c;希望可以帮助到大家去快速定位和解决类似问题故障。 Docker是一种相对使用较简单的容器&#xff0c;我们可以通过以下几种方式获取信息&#xff1a; 1、…

[labelme]labelme如何将标注的json格式转成png的mask文件掩码文件

labelme工具不仅仅具有标注功能&#xff0c;而且可以将json文件转化为png的分割训练文件&#xff0c;如果您是一个类别则可以直接用labelme_json_to_dataset进行转换最后提取对应的掩码文件即可进行语义分割训练。如果您是>2个类别则不推荐使用labelme工具进行转换&#xff…

安卓动态广播

在AndroidManifest.xml文件的<manifest>标签内添加以下权限声明&#xff1a; <uses-permission android:name"android.permission.ACCESS_NETWORK_STATE"/> 这行代码声明了应用程序需要访问网络状态的权限。添加此权限后&#xff0c;应用程序将能够获取…

conda环境下wget: command not found解决方案

1 问题描述 window10的conda环境下&#xff0c;运行程序&#xff0c;报如下错误 sh download_model.sh mkdir: cannot create directory ‘data’: File exists download_model.sh: line 4: wget: command not found download_model.sh: line 5: wget: command not found mkd…

UE5 C++ 基础变量类型,关于框架的初级练习

一.创建自己的MyGameModed。并在其中设置好GamePlay框架。 1.创建MyGameState,MyGameState,MyHUD,MyPawn&#xff0c;MyPawn&#xff0c;MyPlayerController,MyPlayerState。 2.并在MyGameMode的头文件里面&#xff0c;把GmaeMode里的框架需要的框架类都包含进去。 3.写一个构…

MySql三方工具

Yearning 1.1.1 Yearning简介 Yearning 开源的MySQL SQL语句审核平台&#xff0c;提供数据库字典查询&#xff0c;查询审计&#xff0c;SQL审核等多种功能。 Yearning 1.x 版本需Inception提供SQL审核及回滚功能。 Inception是集审核&#xff0c;执行&#xff0c;回滚于一体的…

报错Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required

控制台提示代码: org.springframework.beans.factory.BeanCreationException: Error creating bean with name shiroFilterFactoryBean defined in class path resource [com/gyc/drug/config/ShiroFilterConfiguration.class]: Bean instantiation via factory method failed…

git设置代理

git设置代理 git config --global http.proxy 127.0.0.1:7890git查询代理 git config --global http.proxy git取消代理 git config --global --unset http.proxy

【Docker】安装nacos以及实现负载均衡

&#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 &#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 前言 一.nacos单个部署 1.镜像拉取 …

分销商城新零售商城门店商城小程序开发

用户注册&#xff1a;让用户用手机号或三方登录的方式轻松开启账号之旅。 商品探索&#xff1a;用户可以自由浏览琳琅满目的商品&#xff0c;还能通过关键词迅速锁定心仪之物。 商品分类与筛选&#xff1a;商品按类陈列&#xff0c;用户可根据价格、品牌等条件筛选&#xff…

电力能源实景三维可视化合集,智慧电网数字孪生

电力能源是现代社会发展和运行的基石&#xff0c;渗透于工业、商业、农业、家庭生活等方方面面&#xff0c;它为经济、生活质量、环境保护和社会发展提供了巨大的机会和潜力。图扑软件应用自研 HT for Web 强大的渲染引擎&#xff0c;助力现代化的电力能源数字孪生场景&#xf…

【计算机网络】子网划分(经典基础练习题)

一、某主机IP地址为110.35.2.68&#xff0c;子网掩码为255.255.255.128&#xff0c;求网络地址&#xff1f; 二、有A类网络18.0.0.0的子网掩码为255.128.0.0&#xff0c;请问可以划分为多少个子网&#xff1f; 并写出每个子网的子网号&#xff1f; 三、将C类网119.181.25.0划分…

画面滤镜特效SDK,企业级视频处理技术方案

视频处理技术日新月异&#xff0c;对于企业而言&#xff0c;如何快速、高效地处理视频内容&#xff0c;增加其观赏性和吸引力&#xff0c;成为了一项重要的挑战。美摄科技画面滤镜特效SDK&#xff0c;作为一款全面的视频处理工具&#xff0c;为企业提供了一种高效、灵活的视频处…

Sentinel 轨道数据及下载

Sentinel卫星轨道文件在处理Sentinel卫星数据时发挥着关键作用。这些轨道文件包含了有关卫星在轨道上的运动、位置、姿态等信息&#xff0c;对于地理校正、成像几何校正以及多时相分析等方面具有重要作用。以下是Sentinel卫星轨道文件的主要作用&#xff1a; 地理校正&#xff…

【全】OpenSSL创建生成CA证书、服务器、客户端证书及密钥说明

本文章对应的文档:使用OpenSSL创建生成CA证书服务器客户端证书及密钥资源-CSDN文库 https://download.csdn.net/download/weixin_41885845/88746920 对于SSL单向认证 服务器需要CA证书、server证书、server私钥,客户端需要CA证。 对于SSL双向认证 服务器需要CA证书、serv…

uni-app小程序 uni.showToast字数超过两行自动省略显示不全问题

在实际开发过程中如果用户提交某些文件时&#xff0c;如果缺少某些条件我们要提醒用户缺少那些条件才能提交&#xff0c;但是如果我们用uni.showToast提醒的次数超过7个字的时候就会导致文字显示不全&#xff0c;达不到提醒的效果&#xff0c;这种时候我们就需要使用uni.showMo…

HarmonyOS—开发环境诊断的功能

为了大家开发应用/服务的良好体验&#xff0c;DevEco Studio提供了开发环境诊断的功能&#xff0c;帮助大家识别开发环境是否完备。可以在欢迎界面单击Help > Diagnose Development Environment进行诊断。如果已经打开了工程开发界面&#xff0c;也可以在菜单栏单击Help >…

Flink的KeyedProcessFunction基于Event Time和Process Time的定时器用法实例分析

FLink处理函数简介 在Flink底层&#xff0c;我们可以不定义任何具体的算子&#xff08;比如 map&#xff0c;filter&#xff0c;或者 window&#xff09;&#xff0c;而只是提炼出一个统一的【处理】&#xff08;process&#xff09;操作——它是所有转换算子的一个概括性的表…

v3的响应式,ref,reactive和生命周期(简写)

vue3笔记 1.两种安装方式 (1)直接创建项目vue3 (2)使用vite 组件传值 1.组件传值的用法 从父组件向子组件传值&#xff1a; <Son :prop1"nmb"></Son> 2.defineprops函数 defineProps函数在setup标签内不需要引入&#xff0c;可直接使用 defineP…