【Vue3】组件通信之$parent

news2025/1/26 15:36:21

【Vue3】组件通信之$parent

  • 背景
  • 简介
  • 开发环境
  • 开发步骤及源码
  • 总结

背景

随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本文内容并非完全原创,大多是参考其他文章资料整理所得,感谢每位技术人的开源精神。

简介

本文介绍 Vue3 中如何使用 $parent 实现子组件向父组件传数据。

Vue3 中组件间通信包括:

  • 父组件向子组件传数据,实现方案有:
    • props
    • v-model
    • $ref
    • 默认插槽 / 具名插槽
  • 子组件向父组件传数据
    • props
    • v-model
    • $parent
    • 自定义事件
    • 作用域插槽
  • 父组件向子组件的子组件传数据,即向孙子组件传数据
    • $attrs
    • provider & inject
  • 任意组件间传数据
    • mitt
    • Pinia

开发环境

分类名称版本
操作系统WindowsWindows 11
IDEVisual Studio Code1.91.1

开发步骤及源码

1> 创建 Vue3 工程,参考:【Vue3】工程创建及目录说明。

2> 删除 src 目录下 assetscomponents 目录。

3> 修改 src 目录下 main.ts

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

4> 修改 Vue 根组件 src/App.vue,使用 defineExpose 函数向子组件提供数据。

<template>
  <div class="parent">
    <h2>图书馆</h2>
    <div class="books">
      <div class="book" v-for="book in books" :key="book.id">
        <h3>书名:{{ book.title }}</h3>
        <h3>作者:{{ book.author }}</h3>
      </div>
    </div>
    <Reader />
  </div>
</template>

<script setup lang="ts">
import Reader from './components/Reader.vue'
import { reactive } from 'vue'

const books = reactive([
    { id: '001', title: '长安的离职', author: '马伯庸'},
    { id: '001', title: '坐天下', author: '张宏杰'},
    { id: '001', title: '饥饿的盛世', author: '张宏杰'},
    { id: '001', title: '风起陇西', author: '马伯庸'},
])

// 向子组件提供数据
defineExpose({ books })
</script>

<style scoped lang="scss">
.parent {
  background-color: orange;
  padding: 20px;
  .books {
    display: flex;
    margin-bottom: 20px;
    .book {
      background-color: white;
      border: 1px solid blue;
      margin-right: 10px;
      padding: 0 10px;
      width: 300px;
    }
  }
}
</style>

注意:需要执行 npm install -D sass 命令安装 CSS 预处理器。

5> 定义子组件,使用 $parent 获取父组件引用。

<template>
    <div class="content">
        <h2>读者:{{ name }}</h2>
        <button @click="borrow($parent)">借书</button>
    </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const name = ref('小七')
function borrow(parent: {[key: string]: any} | null) {
    if (parent != null) {
        parent.books.shift()
    }
}
</script>

<style scoped lang="scss">
.content {
    background-color: greenyellow;
    padding: 20px;
    button {
    font-size: 18px;
    font-weight: bold;
    height: 40px;
    margin-bottom: 10px;
    margin-right: 10px;
    width: 150px;
  }
}
</style>

注意:$parent 获取父组件引用可能为 null,所以示例代码中对 null 做了特殊处理。

6> 执行命令 npm run dev 启动应用,浏览器访问:http://localhost:5173/
在这里插入图片描述
每点击一次子组件中的 借书 按钮,父组件中图书列表便会删除列表中第一本图书。

总结

使用 $parent 实现子组件向父组件传数据,首先需要父组件使用 defineExpose 函数将数据提供给子组件,defineExpose 函数是一个对象,由向子组件提供的数据组成,然后子组件使用 $parent 获取对父组件的引用,并进一步实现向父组件传数据。

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

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

相关文章

利用Dockerfile文件执行docker build自动构建镜像

一、Dockerfile使用详解 1.1 Dockerfile介绍 DockerFile是一种被Docker程序解释执行的脚本&#xff0c;由一条条的命令组成的&#xff0c;每条命令对应linux下面的一条命令&#xff0c;Docker程序将这些DockerFile指令再翻译成真正的linux命令&#xff0c;其有自己的书写方式和…

读零信任网络:在不可信网络中构建安全系统08设备清单管理

1. 设备清单管理 1.1. 设备的认证和完整性检查是零信任安全至关重要的第一大步&#xff0c;但是仅仅验证设备是否属于企业是不够的 1.2. 设备清单管理涉及对设备及其属性进行编目管理 1.2.1. 将配置管理作为设备清单数据库 1.2.2. 维护/管理这些记录对客户端和服务器设备同样…

AI电销机器人的效果与作用

ai电销机器人的工作效率是非常高的&#xff0c;电销机器人一天的外呼量至少是3000左右&#xff0c;工作效率是人工的十倍还多&#xff0c;并且电销机器人没有负面情绪&#xff0c;一直都可以保持高昂的工作热情&#xff0c;非常简单方便。 并且ai电销机器人是越用越聪明的&…

刘润《关键跃升》读书笔记3

1&#xff09; 防御动⼒”发动机 ⽐如&#xff0c;恐惧。 转正考核、末位淘汰等&#xff0c;本质上都是在制造“危险”环境&#xff0c;从⽽激发员 ⼯全⼼投⼊。万⼀没转正&#xff0c;万⼀被淘汰&#xff0c;房贷怎么还&#xff0c;孩⼦怎么养&#xff1f; 你想想都害怕&am…

【Redis 进阶】哨兵 Sentinel(重点理解流程和原理)

Redis 的主从复制模式下&#xff0c;一旦主节点由于故障不能提供服务&#xff0c;需要人工进行主从切换&#xff0c;同时大量的客户端需要被通知切换到新的主节点上&#xff0c;对于上了一定规模的应用来说&#xff0c;这种方案是无法接受的&#xff0c;于是 Redis 从 2.8 开始…

sa-token登录机制以及网关统一鉴权环境搭建

文章目录 1.sa-token1.37集成&#xff08;基于token&#xff09;1.文档网址2.**sun-club-auth-application-controller引入依赖**3.application.yml4.sun-club-auth-application-controller测试的controller1.UserController.java2.启动测试1.登录&#xff0c;得到satoken2.验证…

当AIGC走进温室大棚:AI+“种菜“的前世今生

&#xff08; 于景鑫 国家农业信息化工程技术研究中心&#xff09; 近年来,人工智能生成内容(AIGC)技术引发业界广泛关注。从NLP领域的GPT-3到CV领域的Stable Diffusion,AIGC展现了惊人的创造力,正在重塑人们的工作和生活方式。与此同时,农业领域也正经历着数字化、智能化的深刻…

Golang环境篇

一、Golang环境篇 一&#xff09;go简介 1、Golang定义 Go语言是Google于2009年推出的一门新的系统编程语言。 2、特性&#xff1a; 静态编译内存分配&#xff1a;Go 选择了 tcmalloc&#xff0c;它本就是为并发而设计的高性能内存分配组件。垃圾回收&#xff1a;每次升级&…

基于51单片机的汽车灯控制器proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1YrwCUQIKwdth1N2UsUtSRA 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectro…

基于Java的网络考试系统的设计与实现

点击下载源码 基于Java的网络考试系统的设计与实现 摘 要 科技在进步&#xff0c;人们生活和工作的方式正发生着改变&#xff0c;不仅体现在人们的衣食住行&#xff0c;也体现在与时俱进的考试形式上。以前的考试需要组织者投入大量的时间和精力&#xff0c;需要对考试的试题…

Java线程池原理剖析和应用指南

目录 Java线程池详解一、Java线程池简介池化思想池化思想的优点 二、线程池的实现原理分析实现线程池需要考虑哪些问题&#xff1f;线程池的简单使用示例线程池原理的简单图示 三、Executor详解Executor简介Executor框架的继承结构总结ExecutorExecutorService 四、ThreadPoolE…

免费自动化AI视频剪辑工具

下载地址&#xff1a;https://pan.quark.cn/s/3c5995da512e FunClip是一款完全开源、本地部署的自动化视频剪辑工具&#xff0c;通过调用阿里巴巴通义实验室开源的FunASR Paraformer系列模型进行视频的语音识别&#xff0c;随后用户可以自由选择识别结果中的文本片段或说话人&…

【Python系列】Python 协程:并发编程的新篇章

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

浪潮信息智算新突破:高密低耗风冷仓问世

浪潮信息与四川省天府云数据科技有限责任公司&#xff08;简称能投天府云&#xff09;强强联手&#xff0c;推出国内首款42kW智算风冷算力仓&#xff0c;该方案由浪潮信息深度参与研发&#xff0c;单机柜AI服务器部署能力跃升至传统机柜6倍以上&#xff0c;实现了风冷单机柜功率…

蚂蚁0511笔试-选择题

按照先序遍历确认父节点&#xff0c;再通过中序遍历划分左右子树。重复。 第二范式&#xff08;2NF&#xff09;确实要求非主属性完全依赖于候选键&#xff08;不一定是主键&#xff0c;因为主键只是候选键的一个特例&#xff09; 第一范式&#xff08;1NF&#xff09;要求数据…

基于python的旅游可视化系统(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;原生小程序开发&#xff0c…

星纪魅族双轮驱动遇阻:AI手机与造车梦能否照进现实?

在科技行业风起云涌的浪潮中&#xff0c;星纪魅族近期的一系列动作引起了广泛关注。从高层换血到全面押注AI&#xff0c;再到宣布造车计划&#xff0c;每一步都显得雄心勃勃&#xff0c;但深入剖析后不难发现&#xff0c;其未来发展之路实则布满荆棘。 星纪魅族选择“All in AI…

OD C卷 - 园区参观路径

园区参观路径&#xff08;100&#xff09; 有一个矩形园区&#xff0c;从左上角走到右下角&#xff0c;只能向右、向下走&#xff1b;共有多少条不同的参观路径&#xff1b; 输入描述&#xff1a; 第一行输入长度、宽度 后续每一行表示 对应位置是否可以参观&#xff0c;0可…

【初学人工智能原理】【12】循环:序列依赖问题

前言 本文教程均来自b站【小白也能听懂的人工智能原理】&#xff0c;感兴趣的可自行到b站观看。 代码及工具箱 本专栏的代码和工具函数已经上传到GitHub&#xff1a;1571859588/xiaobai_AI: 零基础入门人工智能 (github.com)&#xff0c;可以找到对应课程的代码 正文 对于…

V.PS德国VPS详细测评

V.PS的德国机房位于法兰克福&#xff0c;默认接入电信CN2 GIA、联通CUII网络&#xff0c;针对中国大陆进行路由优化处理的。而且是强制移动走联通的CUII链路&#xff0c;确保三网都处在轻负载的网络环境下。 CPU是Intel Xeon Gold 6133 &#xff0c;启用了BBR&#xff0c;归属德…