当前位置: 首页 > news >正文

vue3组合式API实现父组件触发子组件中的方法 | vue3中ref的用法 | defineExpose的使用场景

vue3组合式API实现父组件触发子组件中的方法 | vue3中ref的用法 | defineExpose的使用场景

目录

  • vue3组合式API实现父组件触发子组件中的方法 | vue3中ref的用法 | defineExpose的使用场景
    • 一、问题背景
    • 二、解决方法
    • 三、示例

一、问题背景

代码环境:vue3 (组合式API setup)+ vite

碰到的问题:代码为父组件中的一个按钮,触发一个填写表单的Dialog弹出框,在填写信息发送请求添加一条信息后,再次点击触发按钮,发现封装Dialog的子组件中,表单中的值没有没有重置。

解决思路:在点击父组件中的触发按钮时,触发子组件中的重置方法,对表单项进行重置。

二、解决方法

在 Vue 3 的组合式 API 中,您可以使用 ref 和 value 来获取子组件实例,并调用子组件中的方法。

官网详解

网址:组件上的ref

三、示例

  1. 父组件中,您需要为子组件添加一个 ref:
<template><div><child-component ref="child"></child-component><button @click="triggerChildMethod">触发子组件方法</button></div>
</template><script>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent},setup() {const childRef = ref(null);const triggerChildMethod = () => {childRef.value.methodName(/* 参数 */);};return {childRef,triggerChildMethod};}
}
</script>
  1. 子组件中,您需要在 setup 函数中定义一个需要调用的方法:
<template><div><!-- 子组件内容 --></div>
</template><script setup>
import { ref } from 'vue';const methodName = () => {// 方法的代码
};// !!!!!用了<script setup>的不要忘记写这个
defineExpose({methodName
});
</script>

:使用了 <script setup> 的组件是默认私有的:一个父组件无法访问到一个使用了 <script setup> 的子组件中的任何东西,除非子组件在其中通过 defineExpose 宏显式暴露。如果没有暴露的话,则会报错childRef.value.methodName is not definded

该注释的官网详解:(地址:组件上的ref,该网页滑到最后可看到下图内容)

image-20231012153627598

http://www.lryc.cn/news/191214.html

相关文章:

  • 【Qt之QTableWidget和QTreeWidget】树悬停、选择样式及表格表头和首行间隔线
  • 使用余弦算法计算向量相似性
  • 存档&改造【06】Apex-Fancy-Tree-Select花式树的使用误删页数据还原(根据时间节点导出导入)
  • OpenCV7-copyTo截取ROI
  • OpenCV10-图像直方图:直方图绘制、直方图归一化、直方图比较、直方图均衡化、直方图规定化、直方图反射投影
  • 线性回归模型进行特征重要性分析
  • hadoop -hive 安装
  • 小迈物联网网关对接串口服务器[Modbus RTU]
  • Java版本+企业电子招投标系统源代码+支持二开+招投标系统+中小型企业采购供应商招投标平台
  • Vue3中reactive, onMounted, ref,toRaw,conmpted 使用方法
  • 有哪些免费的PPT模板网站,推荐这6个PPT模板免费下载网站!
  • 剧院建筑三维可视化综合管控平台提高安全管理效率
  • “过度炒作”的大模型巨亏,Copilot每月收10刀,倒赔20刀
  • 顺序表经典的OJ题
  • video_topic
  • uniapp获取公钥、MD5,‘keytool‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  • Jetson Orin NX 开发指南(5): 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速
  • Spring Security 6.x 系列【67】认证篇之安装 ApacheDS
  • 理解线程池源码 【C++】面试高频考点
  • BP神经网络应用案例
  • 日常学习记录随笔-大数据之日志(hadoop)收集实战
  • 【云计算】相关解决方案介绍
  • 攻防世界题目练习——Crypto密码新手+引导模式(二)(持续更新)
  • LeetCode【1】两数之和
  • 【运维笔记】VMWare 另一个程序已锁定文件的一部分,进程无法访问
  • [Springboot]统一响应和异常处理配置
  • Redis第四五六章 持久化事务主从复制
  • 【强烈推荐】免费的PDF工具,包括PDF拆分/分割、转WORD等功能的免费在线软件工具,救了大命,找了半天什么pdf365、福xipdf、还有哔果pdf全是打着免费名义收费,烦死了
  • SpringMVC源码分析(二)启动过程之RequestMappingHandlerMapping分析
  • KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(7)