【Vue3学习】使用ref调用子组件的方法,实现子组件的显示与隐藏

ops/2024/12/25 8:49:00/

不同于v2的写法,在v3中,子组件的方法和变量需要用defineExpose 暴露出去,defineExpose 是 Vue 3 提供的一个 API,用于显式地暴露组件中的方法或属性给外部(通常是父组件)。它的主要用途是让你能够控制哪些内容可以被父组件通过 ref 或 $refs 访问到。

代码演示

子组件

<template><div v-show="visible" class="child-component"><!-- 子组件的内容 --><p>This is the child component.</p></div>
</template><script setup lang="ts">javascript">
import { ref } from 'vue';// 定义一个 ref 变量来控制组件的显示和隐藏
const visible = ref(false);// 定义一个方法来切换显示/隐藏状态
const toggleVisibility = () => {visible.value = !visible.value;
};// 暴露方法和变量给父组件
defineExpose({toggleVisibility,
});
</script><style scoped>
.child-component {padding: 10px;border: 1px solid #ccc;
}
</style>

父组件

<template><div><button @click="toggleChildVisibility">Toggle Child Visibility</button><ChildComponent ref="childRef" /></div>
</template><script setup lang="ts">javascript">
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';// 通过 ref 引用子组件实例
const childRef = ref<InstanceType<typeof ChildComponent> | null>(null);// 切换子组件显示/隐藏的方法
const toggleChildVisibility = () => {if (childRef.value) {childRef.value.toggleVisibility();}
};
</script><style scoped>
button {margin-bottom: 10px;
}
</style>

http://www.ppmy.cn/ops/144811.html

相关文章

Git 的基本概念和使用

Git是一个分布式版本控制系统&#xff0c;它可以帮助开发人员追踪和管理代码的修改。下面是Git的基本概念和使用方式的解释&#xff1a; 仓库&#xff08;Repository&#xff09;&#xff1a;Git使用仓库来存储代码和版本历史记录。仓库可以位于本地计算机上&#xff0c;也可以…

WPF 依赖属性和附加属性

除了普通的 CLR 属性&#xff0c; WPF 还有一套自己的属性系统。这个系统中的属性称为依赖属性。 1. 依赖属性 为啥叫依赖属性&#xff1f;不叫阿猫阿狗属性&#xff1f; 通常我们定义一个普通 CLR 属性&#xff0c;其实就是获取和设置一个私有字段的值。假设声明了 100 个 …

【C++】模板与泛型编程(一):定义模板,类模板

16.1.2 类模板 类模板&#xff08;class template&#xff09;可以用来生成类的蓝图。与函数模板的不同之处在于&#xff0c;编译器不能为类模板推断模板参数类型。 为了使用类模板&#xff0c;必须在模板名后的尖括号中提供额外的信息——用来代替模板参数的模板实参列表。 …

[WASAPI]从Qt MultipleMedia来看WASAPI

[WASAPI] 从Qt MultipleMedia 来看WASAPI 最近在学习有关Windows上的音频驱动相关的知识&#xff0c;在正式开始说WASAPI之前&#xff0c;我想先说一说Qt的Multiple Media&#xff0c;为什么呢&#xff1f;因为Qt的MultipleMedia实际上是WASAPI的一层封装&#xff0c;它在是线…

【HarmonyOS】HarmonyOS和React Native混合开发 (一)之环境安装

【HarmonyOS】HarmonyOS和React Native混合开发 &#xff08;一&#xff09;之环境安装 一、React Native是什么&#xff1f; React Native 是一个基于 JavaScript 和 React 框架的开源框架&#xff0c;可以用到开发移动应用跨端解决方案。实现一套代码&#xff0c;在Android…

鸿蒙生态崛起:开发者机遇与挑战并存

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 目录 引言 一、何为鸿蒙生态&#xff1f; 二、在鸿蒙生态下开发时遇到的挑战 三、对于鸿蒙生态未…

【Linux探索学习】第二十三弹——理解文件系统:认识硬件、探索文件在硬件上的存储问题

Linux学习笔记&#xff1a;https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 我们前面讲过了文件的组成是由文件内容和文件属性两者组成的&#xff0c;但是我们前面接触的文件都是系统中的文件&#xff0c;都是已经在进…

systemverilog中的priority if

1 基本概念 在 SystemVerilog 中&#xff0c;priority - if是一种条件判断结构。它和普通的if - else语句类似&#xff0c;但在条件评估和错误检查方面有自己的特点&#xff0c;主要用于按顺序评估多个条件&#xff0c;并且对不符合预期的情况进行报错。报错如下两点 当所有条件…