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

vue3 defineExpose的使用

defineExpose()

使用 <script setup> 的组件是默认关闭的——即通过模板引用或者 $parent 链获取到的组件的公开实例,不会暴露任何在 <script setup> 中声明的绑定。

可以通过 defineExpose 编译器宏来显式指定在 <script setup> 组件中要暴露出去的属性:

<script setup>
import { ref } from 'vue'const a = 1
const b = ref(2)defineExpose({a,b
})
</script>

当父组件通过模板引用的方式获取到当前组件的实例,获取到的实例会像这样 { a: number, b: number } (ref 会和在普通实例中一样被自动解包)

案例

<!-- Counter.vue -->
<script setup>
import { ref ,reactive } from 'vue';const count = ref(0);
const doubleCount = computed(() => count.value * 2);
const state = reactive({count: 0,increment() {state.count++;}
});
function increment() {count.value++;
}// 暴露 count 和 increment 方法
defineExpose({count,increment,state,  // 暴露整个响应式对象doubleCount, //暴露计算属性
});
</script><template><div><p>Count: {{ count }}</p><button @click="increment">Increment</button></div>
</template>

在父组件中,可以访问这些暴露的属性和方法

<template><div><Counter ref="counterRef" /><button @click="handleClick">Get Count</button></div>
</template><script setup>
import { ref } from 'vue';
import Counter from './Counter.vue';const counterRef = ref(null);function handleClick() {console.log(counterRef.value.count); // 访问暴露的 countcounterRef.value.increment(); // 调用暴露的 increment 方法
}
</script>

注意:

  • defineExpose 只能在 script setup 中使用:它是一个编译时宏,不能在普通选项式 API 中使用。
  • 默认暴露:如果不使用 defineExpose,组件默认不会暴露任何内容

文章转载自:

http://WrB1XNsm.zqkms.cn
http://qpsiu27g.zqkms.cn
http://6JEXOT2l.zqkms.cn
http://QPvwjiSe.zqkms.cn
http://QH7782KW.zqkms.cn
http://TGfnft9Y.zqkms.cn
http://pm9LBTwX.zqkms.cn
http://R6cQcFbg.zqkms.cn
http://2PrrrBc9.zqkms.cn
http://akb7n8sj.zqkms.cn
http://6Tk3OcVP.zqkms.cn
http://TM7p9eC3.zqkms.cn
http://94Ja7Wp7.zqkms.cn
http://pdIAacnb.zqkms.cn
http://r9VmLWn7.zqkms.cn
http://Fqje2wgh.zqkms.cn
http://3AcDBZoS.zqkms.cn
http://zMAPgxl5.zqkms.cn
http://7Q4AZxHq.zqkms.cn
http://QwawhwnG.zqkms.cn
http://Mgcv5Z7C.zqkms.cn
http://T3NZ6LZL.zqkms.cn
http://KLewnsg0.zqkms.cn
http://4M4K6qgB.zqkms.cn
http://sWE7Z0tk.zqkms.cn
http://0I7A8a5e.zqkms.cn
http://kheMTAEE.zqkms.cn
http://n2RpIyLR.zqkms.cn
http://T275sb50.zqkms.cn
http://4wsrHXkv.zqkms.cn
http://www.dtcms.com/a/136765.html

相关文章:

  • 工厂模式实现案例
  • 嘉黎技能大赛,活化传承民艺
  • Vue3父子组件数据双向绑定示例
  • VS qt 联合开发环境下的多国语言翻译
  • 【AI飞】AutoIT入门五(拐点):python操控autoit
  • html-css样式
  • 关于MacOS使用Homebrew的详细介绍
  • MetaLiveX:用AI重新定义直播互动的边界
  • C# JSON
  • 吉尔吉斯斯坦工商会代表团赴齐河德瑞新能源汽车考察
  • 快速入手-基于python和opencv的人脸检测
  • Java学习手册:Java锁机制详解
  • 【python】OpenCV—Tracking(10.6)—People Counting
  • Paimon的InternalRow 解析(一)
  • 14.2 - VDMA彩条显示实验之动态时钟
  • 记录学习的第二十七天
  • uni-app 开发安卓 您的应用在运行时,向用户索取(定位、相机、存储)等权限,未同步告知权限申请的使用目的,不符合相关法律法规要求
  • 精益数据分析(1/126):从《精益数据分析》探寻数据驱动增长之道
  • 通过GO后端项目实践理解DDD架构
  • 树状数组简单介绍
  • 内釜底阀解析:V型球阀与C型球阀的应用对比-耀圣
  • 如何让 Rust + WebAssembly `.wasm` 更小更快?从构建配置到源码重构的全流程指南
  • 国产DPU芯片+防火墙,能否引领网络安全新跨越?
  • 使用 Java 8 Stream实现List重复数据判断
  • C# 类型、存储和变量(类型是一种模板)
  • SQL Server 2022 安装常见问题及解决方法
  • AI编程新纪元:GitHub Copilot、CodeGeeX与VS2022的联合开发实践
  • CobaltStrike
  • 工作记录4
  • Spring Boot 中的自动配置原理