vue3 组合式api中 ref 和$parent 的使用

2023-11-06

ref 的使用

vue3中, 在 组件中添加一个 component ref=“xxx” ,就可以在父组件中得到 子组件的 dom 对象, 以及 虚拟的 dom 对象, 有了虚拟 dom, 我们就可以在父组件中控制子组件的显示了

ref 的使用方法

在这里插入图片描述

vue3中ref 的特点

以上如果在vue2中,就可以使用 子组件的对象来改变子组件的数据, 和调用子组件的方法了, 但是在vue3 , 这样做还是不行的, 还要做一步操作才可以,也就是要在子组件中, 把父组件想用的方法或属性暴露出去才可以
在这里插入图片描述

以上是父组件通过 ref 来得到子组件的对象, 进而控制子组件中的 属性和方法
那么我们通过子组件, 如何去控制父组件的属性和方法呢。那就不止一种方法了
emit mitt(bus) 都是可以了, 这里要说的是 和 ref 相类似的 $parent 方法
$parent 可以添加在子组件中的事件参数上, 参数名称必须是 $parent,这样在事件的回调方法中就可以,得到父组件的对象, 并控制其中的属性和方法了。
同样的道里, 我们要在父组件中, 把要使用的方法或属性暴露出来才可以使用


下面给出一个样例, 父组件中的按钮可以改变子组件中的属性, 并且子组件中的按钮可以改变父组件中的

父组件

<template>
  <div class="baba">
    我是父组件, 我的资产是 {{money}}
    <button @click="borrow100">点击我从儿子那里拿1000</button>
    <hr/>
    <erzi ref="son"></erzi>   //变量中定义一个和 ref 同名的,就可以得到子组件的对象
  </div>
</template>

<script setup>
  import {ref} from "vue";
  import erzi from "@/views/Home/erzi.vue";
  let money = ref(100000000);
  let son = ref()   //通过 ref 获取到子组件的对象
  const borrow100 = ()=>{   //这里点击了父组件的按钮, 去改变子组件的 money  属性
    money.value+=1000;
    son.value.money -= 1000;
  }
  defineExpose({money})	//这里是通过暴露父组件的 money 属性, 给子组件来使用
</script>

子组件

<template>
  <div class="erzi">
    我是子组件, 我的资产是 {{ money }}
    <button @click="yao20($parent)">点击我们父亲那里拿 20</button>
    			//这里子组件的事件使用的 $parent 来做参数,必须使用 $parent 才可以得到父组件的对象
  </div>
</template>

<script setup>
  import {ref} from "vue";
  let money = ref(88888888);
  const yao20 = (p)=>{    //这是子组件中的事件, 触发更改父组件的属性
  							//根据传参可以知道  p 就是父组件的对象
    money.value +=20;
    p.money -=20;
  }
  defineExpose({			//这里是暴露 子组件的 money属性, 因为父组件需要使用,
  							//如果需要的话, 这里也可以暴露方法
    money
  })
</script>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3 组合式api中 ref 和$parent 的使用 的相关文章

  • 无法在地图循环中访问 Axios 调用的值

    我有一个 javascript 对象 其 ID 对应于一组画廊 我使用地图循环遍历它 在每个循环中 我都会进行 axios 调用来获取当前 id 的图库 最后 我需要一个包含所有画廊内容的数组 问题是地图循环完成后我无法访问数据 当我 co
  • 为什么 useReducer 调度会导致重新渲染?

    假设我实现一个简单的全局加载状态 如下所示 hooks useLoading js import React createContext useContext useReducer from react const Context crea
  • 节点遗留 url.parse 已弃用,用什么代替?

    require url parse someurl com page 已被仅弃用 并且我们严格的 linter 对此不满意 我尝试用互联网建议的内容替换我们的代码中的它new URL someurl com page 在大多数情况下都有效
  • Mozilla WebExtension API 存储 - 使用和不使用断点进行调试会导致不同的输出

    大家好 我正在尝试为 Mozilla Firefox 浏览器实现一个附加组件 以下脚本显示了我已经成功集成的一个后台脚本 它使用 Mozilla WebExtension API 存储 它被执行了 但浏览器控制台上的日志让我感到惊讶 我交替
  • 图表.js.如何更改“标签”数组的字体样式?

    我从 Chart JS 库中获取了一个图表 截屏 https i stack imgur com DnuRq png var ctx document getElementById myChart var data labels HTML
  • 鼠标移动时画布拖动

    我正在尝试构建一个可以使用鼠标移动拖动的画布 我做了一些我无法理解的错误 因为一开始似乎有效 然后出现了一个增量错误 使画布移动得太快 考虑以下代码 window onload function var canvas document ge
  • 用更好的模式替换开关(Javascript)

    我必须升级我的应用程序以根据用户类型和角色属性显示页面 目前 我使用一个简单的 switch 语句来根据用户类型来执行此操作 例如 switch type case a return CONSTANT ONE case b return C
  • 在动态创建的元素的onclick函数的属性中传递一个字符串

    我试图在动态创建的锚元素的 onClick 事件处理函数的参数中传递一个字符串 请参阅小提琴http jsfiddle net shmdhussain bXYe4 http jsfiddle net shmdhussain bXYe4 我无
  • 指定 HTML5 输入类型 = 日期的值输出?

    我想将本机日期选择器添加到我的应用程序中 该应用程序当前使用遗留的本地系统 日期输入支持尚未广泛普及 但如果我可以基于兼容性提供这两种实现 那就太理想了 有没有办法指定 HTML 日期选择器给出的值的输出 歌剧的默认设置是yyyy mm d
  • 插件 gulp-babel 错误:插件/预设文件不允许导出对象,只能导出函数

    我现在尝试在我的 Ionic v1 应用程序中使用 JavaScript 2015 ES6 包 json name test version 1 0 0 dependencies ionic native deeplinks 4 18 0
  • NodeJS - 将相对路径转换为绝对路径

    In my 文件系统我的工作目录在这里 C temp a b c d 在 b bb 下有文件 tmp txt C temp a b bb tmp txt 如果我想从工作目录转到该文件 我将使用以下路径 bb tmp txt 如果该文件不存在
  • 使用 eval 时不会受到 XSS 威胁

    我正在制作 不是现在 但我仍然对这个感到好奇 一款使用 HTML5 和 JS 的游戏 我想要的是人们可以插入自定义脚本 但要安全 function executeCustomJS code eval code bad 当然这段代码非常糟糕
  • 文件缓存:查询字符串与上次修改时间?

    我正在研究缓存网站资源的方法 并注意到大多数与我类似的网站都使用查询字符串来覆盖缓存 例如 css style css v 124942823 后来 我注意到每当我保存 style css 文件时 最后修改的标头都会 更新 使得查询字符串变
  • 为什么浏览器允许onmousedown JS改变href?

    我很长时间以来都注意到 当您尝试复制链接位置或在 Facebook 上打开链接时 它会修改链接并将其传递给l php 例如 我可以被发送到 http www facebook com l php u http 3A 2F 2Fwww goo
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • JavaScript setTimeout 和更改系统时间会导致问题

    我注意到如果我设置setTimeout未来1分钟 然后将我的系统时间更改为过去5分钟 setTimeout功能将在 6 分钟后触发 我这样做是因为我想看看夏令时系统时钟更改期间会发生什么 我的 JavaScript 网页使用setTimeo
  • D3 强制布局,较大的节点聚集在中心

    我一直在修改将用于标签云的强制布局 每个标签都由一个
  • 有序 JSON 对象

    我有一个 servlet 它与数据库通信 然后返回有序 按时间排序 对象的列表 在servlet部分 我有 access DB returns a list of User objects ordered ArrayList users M
  • YouTube 点击时禁用 HTML5

    有没有办法让我们通过javascript禁用HTML5视频的 播放 暂停 点击全屏 功能 然后在我们再次需要时将其放回去 我不知道你是否可以禁用它们 但你可以使用 css 删除它们 video webkit media controls f
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • 小程序蓝牙通信

    蓝牙通信能力封装 一开始是根据uniapp提供的蓝牙api写的蓝牙方法 之后发现复用性 以及一些状态的监听存在缺陷 之后整理成了类 这样复用性以及状态监听的问题就解决了 蓝牙组件 创建蓝牙组件的类 单例模式是为了保证蓝牙长连接 只有一个蓝牙
  • vue2中使用wangEditor(JS引入)

    本文讲的不是npm安装 是下载js本地引入哦 想了解vue2和vue3的npm安装的 去这里 用于 Vue React wangEditor 为了防止内网无法使用 咱不用cdn引入 直接下载js放入本地使用 第一步 下载wangEditor
  • 使用LibVlc解决视频播放中的部分问题

    使用LibVlc解决视频播放中的部分问题 标签 空格分隔 libvlc 简介libvlc vlc是一个开源的 跨平台的视频播放器 VLC支持大量的音视频传输 封装和编码格式 详情可访问 http www videolan org 了解 li
  • Linux的mysql在Windows无法远程连接

    Linux的mysql在Windows无法远程连接 0 设置跳过校验 mysqlId 添加skip grant tables vi etc my cnf 顺便查一下编码 1 权限不够只允许本机连接 linux登入mysql执行命令 gran
  • 计算机中原码反码补码的应用场合,反码

    反码是数值存储的一种 多应用于系统环境设置 如linux平台的目录和文件的默认权限的设置umask 就是使用反码原理 在计算机内 定点数有3种表示法 原码 反码和补码 中文名 反码 外文名 Inverse code所属领域 作 用 存储数值
  • DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)

    OSW MMOS直驱方向盘DIY过程记录 简书 jianshu com DIY 一个汽车方向盘游戏外设 MMOS OSW DIY 首先讲一下这个直驱系统大概的框架 首先是电脑 电脑里装MMOS的软件 这个软件国内高手把它汉化了的 电脑通过U
  • [983]mitmweb的使用

    安装mitmproxy时带有mitmweb 可直接在命令行输入命令 mitmweb 此时可打开web界面 来源 https www cnblogs com shenhf p 9783174 html
  • 超详细debug教程!小白必看!百分之八十的人都不知道的debug小技巧;pycharm界面如何设置?pycharm如何debug?for循环时如何停止?各种debug小技巧分享!

    如果你是刚上手python的小白 一定要看这篇文章 如果已经用了好几年python 也不要错过这篇文章哦 总有一些小tips是你不知道的 目录 1 整体界面设置 2 如何debug 3 怎么运行到下一步 3 1 Step Over 3 2
  • apk开发教程!那些年Android面试官常问的知识点,2年以上经验必看

    前言 下面的题目都是大家在面试字节跳动或者其它大厂面试时经常遇到的 如果大家有好的题目或者好的见解欢迎分享 参考解析 郭霖 鸿洋 内容特点 条理清晰 含图像化表示更加易懂 内容概要 包括 Handler Activity相关 Fragmen
  • 数据挖掘工程师主要做什么?

    转自 微点阅读 https www weidianyuedu com content 5317504350632 html 数据挖掘工程师负责科技数据挖掘算法模型的构建 应用 评测 报告 下面是第一范文网小编为您精心整理的数据挖掘工程师的基
  • SIMPLIS仿真软件1-SIMPLIS介绍

    SIMPLIS仿真软件1 SIMPLIS介绍 导读 SIMPLIS是什么 SIMPLIS的三种分析模式 SIMPLIS的三个关键概念 1 SIMPLIS是时域仿真 2 SIMPLIS的模型都是PWL模型 3 SIMPLIS的特有的POP的作
  • hausman检验_互助问答第302期:关于内生性检验的问题

    http weixin qq com r PTkwKHjEvSXCrTxL92wv 二维码自动识别 关于内生性检验的问题老师 您好 关于内生变量的检验常常相互矛盾 请问应当以哪种检验结果为准呢 1 首先进行豪斯曼检验结果如下 结论拒绝所有解
  • 怎样才能从Java初级程序员成长为一名合格的架构师?

    怎样学习才能从一名Java初级程序员成长为一名合格的架构师 或者说一名合格的架构师应该有怎样的技术知识体系 这不仅仅是一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题 下面 我来详细回答这些问题 希望这篇文章
  • 基于Python和mysql开发的智慧校园答题考试系统(源码+数据库+程序配置说明书+程序使用说明书)

    一 项目简介 本项目是一套基于Python和mysql开发的智慧校园答题考试系统 主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者 包含 项目源码 项目文档 数据库脚本等 该项目附带全部源码可作为毕设使用 项目
  • 搭建自己的searx搜索引擎

    Searx是一个隐私尊重的免费元搜索引擎 它具有以下功能特性 自我托管 默认不使用 Cookie 不跟踪 不分析用户 不收集用户数据 不与第三方共享用户数据 提供安全的加密连接 HTTPS SSL 等 如果您更在意隐私而不是效率 这会是一个
  • PPTP L2TP IPsec

    点对点隧道协议 PPTP PPTP是一个第2层的协议 将PPP数据桢封装在IP数据报内通过IP网络 如Internet传送 PPTP还可用于专用局域网络之间的连接 RFC草案 点对点隧道协议 对PPTP协议进行了说明和介绍 该草案由PPTP
  • springboot+cache缓存下(原理篇)

    原理 1 自动配置类 CacheAutoConfiguration 在idea中使用快捷键ctrl shift n 查找出CacheAutoConfiguration类 看到import中有导入CacheConfigurationImpor
  • S7-1200 PLC的数据类型

    S7 1200 PLC的数据类型 除了基本数据类型之外 还支持一些复杂的数据类型 包括结构数据类型Struct PLC数据类型UDT 数组Array 系统数据类型SDT 硬件数据类型DB ANY 参数数据类型Variant String和C
  • C++11静态断言static_assert

    C 11静态断言static assert 一 运行时断言 二 静态断言的需求 三 静态断言 四 单参数版本的静态断言 一 运行时断言 断言 assertion 是一种编程中常用的手段 在通常情况下 断言就是将一个返回值总是需要为真的判别式
  • vue3 组合式api中 ref 和$parent 的使用

    ref 的使用 vue3中 在 组件中添加一个 component ref xxx 就可以在父组件中得到 子组件的 dom 对象 以及 虚拟的 dom 对象 有了虚拟 dom 我们就可以在父组件中控制子组件的显示了 ref 的使用方法 vu