Vue组件嵌套和组件通信

2023-11-09

一.组件嵌套

组件嵌套:在一个组件中使用另一个组件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="../public/js/vue.min.js"></script>
</head>
<body>

<div id="app">

    <base-temp1></base-temp1>

</div>

<template id="base1">
    <div>
        <h1>这是BaseTemp1组件</h1>
        <base-temp2></base-temp2>
    </div>

</template>


<template id="base2">
    <h1 style="color: red">这事BaseTemp2组件</h1>
</template>


<script>

    // 创建组件
    let BaseTemp2 = {
        template: "#base2"
    }

    // 创建组件
    let BaseTemp1 = {
        template:"#base1",
        components: {BaseTemp2}
    }

    // 创建Vue实例【创建Vue组件】
    new Vue({
        el:"#app",
        components:{BaseTemp1}
    });
    
    
    // Vue组件>>>base1>>>base2

</script>

</body>
</html>

 二.组件通信

1.父传子

1.1声明属性

在子组件中通过props声明属性用于接收数据

在子组件中通过props声明属性用于接收

let BaseTemp2 = {
        template: "#base2",
        // props:["msg"]
        /*props:{
            msg:Number
        }*/
        props:{
            msg:{
                type:String,
                required:true,
                default:"null"
            }
        }
    }

 1.2传递数据

在父组件中使用子组件时,通过v-bind进行传递数据

 

<!--    使用子组件    传递参数-->
<base-temp2 :msg = "message"></base-temp2>

1.3使用数据

<h1>{{msg}}</h1>

2.子 传父

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="../public/js/vue.min.js"></script>
</head>
<body>

    <div id="app">
        <fu-component></fu-component>
    </div>

    <template id="fu">
        <div>
            <h1 style="color:red;">{{value}}</h1>
<!--            自定义事件 = 父组件函数   -->
            <zi-component @demo="handleFu"></zi-component>
        </div>

    </template>

    <template id="zi">
        <div>
            <h1>子组件</h1>
            <button @click="setData">给父组件传参</button>
        </div>

    </template>

    <script>


        // 子组件
        let ZiComponent = {
            template:"#zi",
            methods:{
                setData(){
                    // 子传父
                    // 参数一:自定义事件
                    // 参数二:要传递的数据
                    // 执行demo事件并传递参数【执行demo事件绑定的函数并传递参数】
                    // 执行子组件上的demo事件绑定的函数并传递参数
                    // demo事件是子组件自定义的事件
                    // 绑定的函数是父组件中的函数
                    this.$emit("demo",123);


                    // 子组件其实是把数据当成参数传递给父组件中的函数
                    // 子组件执行我自己的自定义事件
                    // 自定义事件绑定了父组件中的函数
                }
            }
        }

        // 父组件
        let FuComponent = {
            template:"#fu",
            data:function () {
                return {
                    value:"这是父组件"
                }
            },
            components:{ZiComponent},
            methods:{
                handleFu(params){
                    // alert(params)
                    this.value = params
                }
            }
        }


        new Vue({
            el:"#app",
            components: {FuComponent}
        });

    </script>

</body>
</html>

3.父子通信扩展

父子通讯可以通过其他方式:children、refs、parent、root

 

属性 描述
$children 获取所有的子组件
$refs 获取标签对象
$el 获取标签名
$data 获取组件中的data属性 $data == data
$root 获取根组件
$set 设置数组
$parent 获取父组件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue组件嵌套和组件通信 的相关文章

随机推荐

  • oracle 表 xml,详细分析Oracle XML数据

    在向大家详细介绍Oracle XML数据之前 首先让大家了解下Oracle 11g 然后全面介绍Oracle XML数据 在Oracle 11g可以使用CLOB及二进制两种方式保存XML信息 灵活性很高 Oracle 11g还支持针对XML
  • ElementUI/ElementPlus+笔记

    如何修改特定文件下使用的Element组件样式 在哪修改样式 在修改element样式时 最好在scoped中修改避免全局污染 如果在scoped中修改样式不生效就在全局中修改 但是在要修改的样式外面套一层class 避免修改了所有页面 使
  • EasyExcel读写Excel

    转载 侵删 原文链接 https mp weixin qq com s T xBuoYgj1NuM7 yHe084Q 最近读者小 H 在知识星球中给阿粉发来私信 阿粉 最近我在负责公司报表平台开发 需要导出报表到 Excel 中 每次使用
  • CenterNet姿势估计decode部分代码解读

    代码链接 https github com xingyizhou CenterNet blob 1085662179604dd4c2667e3159db5445a5f4ac76 src lib models decode py L497 代
  • npm和yarn的区别(包管理工具)

    包管理工具npm和yarn的一些区别 1 官网文档 npm https www npmjs cn yarn https yarn bootcss com 2 npm存在的一些不足 npm install的时候巨慢 特别是新的项目拉下来要等半
  • 留学文书可以彻底被AI取代吗?留学顾问是否会被AI逼到墙角?

    近日 ChatGPT再次 进化 其最新版本ChatGPT 4又掀高潮 其生产者OpenAI 称 ChatGPT 4是最先进的系统 能生产更安全和更有用的回复 和上一代相比 GPT 4拥有了更广的知识面和更强的解决问题能力 在创意 视觉输入和
  • Qt中图像的显示与基本操作

    Qt可显示基本的图像类型 利用QImage QPxmap类可以实现图像的显示 并且利用类中的方法可以实现图像的基本操作 缩放 旋转 1 Qt可显示的图像类型 参考Qt的帮助文档 可支持的类型 即可以直接读取并显示的格式有BMP GIF JP
  • Java Package 访问控制权限 相关

    Java Package 访问控制权限 1 1 关于java的包机制 1 2 带有package的java程序如何执行 1 3 访问控制权限 1 1 关于java的包机制 不同功能的类放到不同的软件包中 查找方便 解决类的重名问题 1 2
  • 实验2熟悉常用的HDFS操作

    1 实验目的 1 理解HDFS在Hadoop体系结构中的角色 2 熟练使用HDFS操作常用的Shell命令 3 熟悉HDFS操作常用的Java API 2 实验平台 1 操作系统 Linux 2 Hadoop版本 2 7 4 3 JDK版本
  • 详解ETL银行数据仓储抽取和加载流程概述

    ETL和ELT ETL是Extract Transfrom Load即抽取 转换 加载三个英文单词首字母的集合 E 抽取 从源系统 Souce 获取数据 T 转换 将源系统获取的数据进行处理加工 比如数据格式转化 数据精度转换 数据清洗 缺
  • python绘制小提琴图_Python:matplotlib 和 Seaborn 之热图、小提琴图和箱线图 (三十四)...

    热图 热图是直方图的二维版本 可以替代散点图 和散点图一样 要绘制的两个数字变量的值位于坐标轴上 和直方图类似 图形区域被划分为网格 并将每个网格的点数加起来 因为没有空间表示长条高度 因此用网格颜色表示计数 你可以通过 Matplotli
  • android module 之间引入出现manifest 冲突

    原因 manifest 文件中属性冲突 例如 原因是导入的库在build gradle中的minSdkVersion与你的应用的minSdkVersion不匹配导致的 app要求应用最小系统版本和库要求系统最小版本不一致 改成 样的就行了
  • 怎么提高团队的代码质量

    1 java代码规范 阿里巴巴IDEA代码规范包 安装和使用的方法 https www jianshu com p 8973b20f2de9 2 编写高质量的单元测试 开发人员能提交测试之前 通过单元测试完成自测 3 保证代码质量要做到持续
  • unity 鼠标点击在2D 物体上 和UI上

    unity 鼠标点击在2D 物体上 和UI上 1 鼠标是否点击在2D 物体上
  • Git的下载与安装教程

    一 Git下载 官网下载地址 Git git scm com 点击 Download for Windows 跳转至详细下载页面 以Windows64位安装版为例 点击 64 bit Git for Windows Setup 即可进行下载
  • 3分钟阿里云服务器网络收发包PPS性能详解

    阿里云服务器ECS网络收发包PPS是什么 云服务器PPS多少合适 网络收发包PPS是指云服务器每秒可以处理的网络数据包数量 单位是PPS即packets per second每秒发包数量 阿里云百科来详细说下阿里云服务器网络收发包PPS性能
  • 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

    Unity学习笔记 Unity中文课堂教程 C 中级编程代码 最近想补一补C 基础 Unity官方的C 中级编程教程质量很高 于是开个帖子把跟着敲 记录了部分价讲解和我自己的理解的代码存在这 原课程链接 添加链接描述 https www b
  • s3c2440上的nor flash启动与nand flash启动的区别

    nor flash启动与nand flash启动的区别 1 接口区别 NOR FLASH地址线和数据线分开 来了地址和控制信号 数据就出来 NAND Flash地址线和数据线在一起 需要用程序来控制 才能出数据 通俗的说 就是光给地址不行
  • vue基础之组件化及父子间通信

    基本组件拆分和嵌套 为了不是项目看起来复杂难懂 所以我们采用组件化开发 所有的组件单独放 在需要使用的地方嵌套即可 app vue
  • Vue组件嵌套和组件通信

    一 组件嵌套 组件嵌套 在一个组件中使用另一个组件 div div