Vue3父子组件通讯一目了然

news2025/2/23 6:25:51

文章目录

  • 🌟 写在前面
  • 🌟 父 👉 子
  • 🌟 子 👉 父
  • 🌟 写在最后


🌟 写在前面

专栏介绍:
凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选型最多的框架,凉哥之前在文章中也提到过就是 Vue 框架之所以火起来的原因,和 Vue 框架相比其他框架的巨大优势,有兴趣的伙伴可以看一下 Vue框架背后的故事、尤大大对前端生态是这样看的,随着 Vue 框架不断的被认可,现如今的 Vue 框架已经是前端工程师必备的技能了,记得尤大大开发 Vue 的初衷,为了让自己的开发工作更加便捷,也希望这个框架能让更多人的开发工作变得轻松;现如今 Vue 框架做到了,尤大大做到了,当然在 20 年的 9 月 18 日,Vue 又向前端同僚们报告了一次大的突破 Vue3.0 版本正式发布!如今已经过去了两年多的时间,更多的公司选择了Vue3技术,所以凉哥也在这个时候为大家出这份专栏,本专栏将帮助大家掌握Vue3+TS技术,提升自己竞争力!点击链接订阅本专栏吧——Vue3通透教程【从零到一】

温故知新:
上篇文章文章中我们为大家介绍了我们Vue3中通过ref获取和操作DOM,以及我们可以通过ref获取组件,但是需要通过defineExpose函数在子组件中进行暴露我们方可在父组件获取数据和调用方法,本篇内容呢将带领大家掌握组件通讯,实现组件中的数据获取!让我们 let’s coding!


🌟 父 👉 子

大家应该都比较熟悉Vue2中的父组件向子组件传值的方式,就是通过在子组件的标签上设置自定义属性,然后子组件通过 props 接受属性的值即可。其实在我们组合式API中也为大家推出了跟props用法极为相似的API那就是——defineProps函数,用法如下:

1)同于Vue2的用法我们传值时都需要在子标签中设置自定义属性
2)子组件中 defineProps 的写法和props类似
3)我们在defineProps中接收的参数跟Vue2props一样都可以直接在模板中进行使用,但是如果我们想在JS中使用需要用变量接收defineProps,然后通过变量访问里面的数据!

子组件 son.vue 我们来通过 defineProps 来接受父组件传递的参数并且在模板中进行使用;

<template>
    <div>
        我是{{ sonName }}儿子
    </div>
</template>

<script setup>
defineProps({
    sonName: {
        type: String,
        defaule: ''
    }
})
</script>

父组件 app.vue 中引入子组件,并在子组件标签中设置自定义属性 sonName 并传递参数“小”给子组件

<template>
    <p>您好,</p>
    <son :sonName="sonName"></son>
</template>
<script setup>
import { ref } from "vue";
import son from "./son.vue";
let sonName = ref('小')
</script> 

在这里插入图片描述
还记得我们上面说的第三条么,我们目前是在模板中进行使用是没有任何问题的,但是如果我们在子组件直接接收到参数后,进行打印大家可以尝试一下,其实会报错,不知道大家能不能回想到我们前面讲setup语法糖的时候跟大家提及到的setup中只能获取顶级变量;所以这里想要在js中直接打印我们需要声明变量来接收 defineProps。大家自行尝试一下!但是我们直接在模板中使用是没有问题的。

在这里插入图片描述


🌟 子 👉 父

通过上面的小节大家掌握了我们Vue3中父传子组件通讯的方式,其实子传父的用法也是类似于Vue2的方式,下面我们就来一下吧!其实也是通过子组件调用父组件的自定义方法并传递参数,我们在父组件的自定义方法中来获取参数,从而实现子组件向父组件传值,注意我们之前Vue2中是通过this.$emit 而我们的Vue3种setup没有this,这就用到了我们下面的新函数——defineEmit函数来获取emit函数。

1)在父组件app.vue中我们在子组件标签上注册自定义事件;
2)子组件中我们通过defineEmits函数来获取要触发的自定义事件
3)我们声明变量emit来接收defineEmits函数,并且通过emit即可调用函数并且传参;

下面我们就在编写一个小案例,还是实现一个点赞的功能,只不过我们讲点击按钮放在子组件,点击后触发父组件的自定义事件并且传递参数实现点赞功能,熟悉我们的子组件向父组件传参!

//son.vue
<template>
    <div>
        <button @click="zan">+10</button>
    </div>
</template>

<script setup>
const emit = defineEmits(['chage'])
const zan = () => {
    emit('chage',10)
}
</script>

//app.vue
<template>
    <p>您好,几何心凉</p>
    总赞数{{ num }}
    <son @chage="fun"></son>
</template>
<script setup>
import { ref } from 'vue';
import son from './son.vue'

let num=ref(0)

const fun=value=>{
    num.value+=value
}

</script> 

在这里插入图片描述


🌟 写在最后

这篇文章为大家介绍了我们Vue3中的父子组件通讯,你是否学会了呢,小伙伴一定记的尝试哦,大家都知道我们出了父子组件通讯之外呢,还是有很多兄弟组件,爷孙组件通讯,那下篇文章中我们将为大家介绍跨级组件通讯!各位小伙伴让我们 let’s coding!

本期推荐

**加粗样式**

原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端直接生成GIF动态图实践

前言去年在博客中发了两篇关于GIF动态生成的博客&#xff0c;GIF图像动态生成-JAVA后台生成和基于FFmpeg的Java视频Mp4转GIF初探&#xff0c;在这两篇博客中都是采用JAVA语言在后台进行转换。使用JAVA的同学经过自己的改造和开发也可以应用在项目上。前段时间有朋友私下问&…

chatgpt这么火?前端如何实现类似chatgpt的对话页面

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;…

【毕业季|进击的技术er】作为一名职场人,精心总结的嵌入式学习路线图

活动地址&#xff1a;毕业季进击的技术er 文章目录0、作者介绍1、前言2、嵌入式基础必备知识2.1、学习内容2.2、学习建议2.3、学习资料3、嵌入式入门篇——51单片机3.1、学习内容3.2、学习建议3.3、学习资料4、STM32进阶篇4.1、学习内容4.2、学习建议4.3、学习资料5、小而美的R…

目标跟踪算法综述

前言: 目标跟踪是计算机视觉领域研究的一个热点问题&#xff0c;其利用视频或图像序列的上下文信息&#xff0c;对目标的外观和运动信息进行建模&#xff0c;从而对目标运动状态进行预测并标定目标的位置。目标跟踪算法从构建模型的角度可以分为生成式(generative)模型和判别…

Vue--》搭配Bootstrap实现Vue的列表增删功能

在日常开发中&#xff0c;我们可以用 “拿来主义” 借助Bootstarp现成的一些样式&#xff0c;快速生成我们想要的页面布局&#xff0c;避免书写大量的HTML和CSS代码&#xff0c;省下了许多不必要的时间。 当我们想要生成表单表格时我们可以查看Bootstrap的官方文档&#xff0c;…

vue2响应式原理

首先要知道vue2 是2013年 基于 ES5开发出来的 我们常说的重渲染就是重新运行render函数 vue2响应式原理简单来说就是vue官网上的这图片 通过 Object.defineProperty 遍历对象的每一个属性&#xff0c;把每一个属性变成一个 getter 和 setter 函数&#xff0c;读取属性的时候…

前端学习之CSS

目录 引言 1. 什么是CSS? 2. 在HTML中使用CSS的三方式(基于CSS2. 0) 2.1 内联定义 2.2 样式块 2.3 引入文件 引言 大家不要觉得CSS也是一种语言&#xff0c;需要花费很多的时间去学习&#xff0c;不要恐惧它&#xff0c;其实CSS只是一个很小的知识点&#xff0c;我们在…

【web渗透】SSRF漏洞超详细讲解

&#x1f495;&#x1f495;&#x1f495; 博主昵称&#xff1a;摆烂阳&#x1f495;&#x1f495;&#x1f495; &#x1f970;博主主页跳转链接 &#x1f469;‍&#x1f4bb;博主研究方向&#xff1a;web渗透测试 、python编程 &#x1f4c3; 博主寄语&#xff1a;希望本篇文…

Vue3的优点,为什么要使用Vue3

1.为什么要使用Vue3&#xff1a; 这里主要通过介绍Vue3的优点以及与Vue2的对比来解答这个问题。 Vue3的六大亮点 1.性能比Vue2快1.2~2倍&#xff1b; 性能的提升主要是通过响应式系统的提升&#xff08;vue3使用proxy对象重写响应式&#xff09;以及编译优化&#xff08;优…

Web项目【用户管理系统】完整版

目录 &#x1f482; 个人主页: 爱吃豆的土豆&#x1f91f; 版权: 本文由【爱吃豆的土豆】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 &#x1f3c6;人必有所执&#xff0c;方能有所成&#xff01; &…

vite3+vue3 项目打包优化实战之-视图分析(rollup-plugin-visualizer)、CDN引入、依赖分包、gzip压缩、history404问题

文章目录写在前面build 视图分析依赖文件第三方库CDN引入依赖文件分包gzip压缩文件部署前配置history路由模式的404问题最后写在前面 vue项目在线下环境开发完成后&#xff0c;我们就需要项目的打包上线了&#xff0c;除了要知道打包命令npm run build 之外&#xff0c;我们还…

前端之vue3使用WebSocket

vue3使用WebSocketWebSocketWebSocket说明WebSocket图示客户端使用WebSocketvue3中, 客户端使用WebSocket步骤更多方法WebSocket WebSocket说明 WebSocket 是全双工网络通信通信协议&#xff0c;实现了客户端和服务器的平等对话&#xff0c;任何一方都可以主动发送数据。并且…

Vue 采用blob下载后端返回的pdf流或者excel流文件乱码问题解决方案

流文件乱码问题解决方案问题介绍&#xff1a;一、前端方式解决&#xff1a;二、后端方式解决&#xff1a;三、文件预览实现四、点击按钮打开新窗口预览问题介绍&#xff1a; 打开或者预览全是乱码。预览pdf如下图&#xff1a; 解决办法&#xff1a; 1. 后端接口返回的blob文…

如何在vue中实现文件预览功能

文件流 如何将各种文件的文件流(blob)转化为线上可以直接预览的数据&#xff0c;这里简单介绍四种不同类型的文件预览。分别是pdf&#xff0c;docx&#xff0c;xlsx&#xff0c;jpg/png/jpeg等。有一个事情是需要重点注意的&#xff0c;文件流必须保证能够被正常下载解析后才可…

前端使用jswebrtc实现视频流播放

JSWebrtc对浏览器的Webrtc做了简单的封装,支持SRS的RTC流的播放. html代码: JSWeb播放器可以通过HTML创建,只需给指定元素添加CSS样式 jswebrtc即可: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta na…

猿创征文|我的前端——【HTML5】基础成长学习之路

文章目录 前言 一、网页的基本组成 1.什么是网页 2.什么是HTML 3.网页的形成 二、常用的浏览器 1.常用的浏览器 2.浏览器内核 三、Web标准 1.为什么需要web标准 2.Web标准的构成 前言 在一次机缘巧合之下了解并接触到CSDN&#xff0c;从此开启了我IT学习之路&#x…

API 低代码开发:接口大师,一套开发、管理和提供接口的产品框架

目录 一、简介 二、“器”有所用 三、“三大”平台/系统使用手册 ⭐️1、API接口系统手册⭐️ 访问在线接口 在线接口文档列表 接口文档详情页 搜索接口 ⭐️2、Platform开放平台手册⭐️ 访问开放平台 注册并登录开发者账号 创建应用 查看接口权限 调用开发接口 获…

uniCloud使用

uni-app 是是一个使用 Vue.js 开发所有前端应用的框架&#xff0c;开发者编写一套代码&#xff0c;可发布到iOS、Android、Web&#xff08;响应式&#xff09;、以及各种小程序&#xff08;微信/支付宝/百度/头条/QQ/钉钉/淘宝&#xff09;、快应用等多个平台。 1 创建uni-app项…

前端获取mac地址

1.通过getMac库获取mac地址 通过getMac库来获取&#xff1a;getmac - npmGet the MAC address of the current machine you are on.. Latest version: 5.20.0, last published: a year ago. Start using getmac in your project by running npm i getmac. There are 201 other…

CSS 如何实现文字渐变色 ?

CSS 实现文字渐变色 CSS 实现文字渐变&#xff0c;有两种方法&#xff1a; 1. background 属性 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><style>.text-gradient {background-image: linear-gradien…