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

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

不同于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">
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">
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.kler.cn/a/453418.html

相关文章:

  • 01 - 初识 Spring
  • SpringAI人工智能开发框架006---SpringAI多模态接口_编程测试springai多模态接口支持
  • WhisperKit: Android 端测试 Whisper -- Android手机(Qualcomm GPU)部署音频大模型
  • .NET Framework 逐渐过时,.NET 8和 .NET 9引领未来
  • 前端Python应用指南(二)深入Flask:理解Flask的应用结构与模块化设计
  • Nginx界的天花板-Oracle 中间件OHS 11g服务器环境搭建
  • HarmonyOS NEXT 实战之元服务:静态案例效果---歌单推荐
  • 如何在 Linux 上使用 Rsync 同步本地和远程目录
  • 机器学习之pandas
  • 多功能jquery图片预览放大镜插件
  • 【C++动态规划】1105. 填充书架|2104
  • Unity功能模块一对话系统(1)前置准备
  • 08-排序
  • 题目解析与Python实现:D. Lizards and Basements 2
  • 【golang】map遍历注意事项
  • JVM【Java虚拟机】基础知识(五)
  • ChatGPT与Postman协作完成接口测试(三)
  • 【人工智能】基于Python与Keras的图像风格迁移实现与解析
  • 典型常见的基于知识蒸馏的目标检测方法总结一
  • 每天40分玩转Django:Django部署概述
  • 用微软365邮箱收发邮件【azure-应用注册】
  • 如何通过HTTP API检索Doc
  • 3D坐标下,一点在某一线段上的左右方向的判定
  • 图论基础算法/DFS+BFS+Trie树
  • 【MyBatis 核心工作机制】注解式开发与动态代理原理
  • 君正buildroot2020在Ubuntu22编译报错