vue3中的defineExpose使用示例教程

 更新时间:2023年09月27日 09:40:29   作者:杨贵妃会飞飞飞  
这篇文章主要介绍了vue3中的defineExpose使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

简介

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

换句话说,如果一个子组件使用的是选项式 API 或没有使用 <script setup> ,被引用的组件实例和该子组件的 this 完全一致,这意味着父组件对子组件的每一个属性和方法都有完全的访问权。

但是如果使用了 <script setup> 的组件,这种组件是默认私有的,也就是一个父组件无法访问到一个使用了 <script setup> 的子组件中的任何东西,除非子组件在其中通过 defineExpose 宏显式暴露:

<script setup>
import { ref } from 'vue'
const a = 1
const b = ref(2)
// 像 defineExpose 这样的编译器宏不需要导入
defineExpose({
  a,
  b
})
</script>

举个栗子

父组件获取子组件的实例,去触发子组件实例身上的方法。

defineExpose-demo.gif

父组件

<template>
<div class="p-20 pb-0 mb-4">
  <div>父组件</div>
  <button class="mt-4" @click="handleClick">点我聚焦</button>
</div>
<Child ref="childeRef"></Child>
</template>
<script setup lang="ts">
import { ref, provide, onMounted } from "vue";
import Child from "./Child.vue";
const childeRef = ref<HTMLInputElement | null>(null);
const handleClick = () => {
  childeRef.value?.inputRef?.focus();
};
</script>

子组件

<template>
  <hr />
  <div class="p-20 pt-4">
    <div>子组件</div>
    <input
      ref="inputRef"
      placeholder="请输入哈哈哈哈"
      class="border-1 mt-4"
    /><br />
  </div>
</template>
<script setup lang="ts">
import { ref } from "vue";
const inputRef = ref<HTMLInputElement | null>(null);
defineExpose({
  inputRef,
});
</script>

参考文档:

https://cn.vuejs.org/api/sfc-script-setup.html#defineexpose

https://cn.vuejs.org/guide/essentials/template-refs.html#ref-on-component

到此这篇关于vue3中的defineExpose使用的文章就介绍到这了,更多相关vue3 defineExpose使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解vue大文件视频切片上传的处理方法

    详解vue大文件视频切片上传的处理方法

    前端上传大文件、视频的时候会出现超时、过大、很慢等情况,为了解决这一问题,跟后端配合做了一个切片的功能,接下来就详细的给大家介绍一下vue大文件视频切片上传的处理方法,需要的朋友可以参考下
    2023-08-08
  • vue中实现左右联动的效果

    vue中实现左右联动的效果

    这篇文章主要介绍了vue中实现左右联动的效果,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-06-06
  • vue中实现滚动加载更多的示例

    vue中实现滚动加载更多的示例

    下面小编就为大家带来一篇vue中实现滚动加载更多的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Vue中的组件及路由使用实例代码详解

    Vue中的组件及路由使用实例代码详解

    组件系统是 Vue 的一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用。这篇文章主要介绍了Vue中的组件及路由使用 ,需要的朋友可以参考下
    2019-05-05
  • vue el-row中ul间距问题

    vue el-row中ul间距问题

    这篇文章主要介绍了vue el-row中ul间距问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • vue3 element plus中el-radio选中之后再次点击取消选中问题

    vue3 element plus中el-radio选中之后再次点击取消选中问题

    这篇文章主要介绍了vue3 element plus中el-radio选中之后再次点击取消选中问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Vue引入ElementUI并使用的详细过程

    Vue引入ElementUI并使用的详细过程

    Element UI是一个基于Vue 2.0的桌面端组件库,旨在构建简洁、快速的用户界面,这篇文章主要介绍了Vue如何引入ElementUI并使用,需要的朋友可以参考下
    2024-06-06
  • vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题

    vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题

    这篇文章主要介绍了vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 前端Vue3引入高德地图并展示行驶轨迹动画的步骤

    前端Vue3引入高德地图并展示行驶轨迹动画的步骤

    最近在Vue项目中引入高德地图,实现地图展示与交互的方法和技术,这里跟大家分享下,这篇文章主要给大家介绍了关于前端Vue3引入高德地图并展示行驶轨迹动画的相关资料,需要的朋友可以参考下
    2024-09-09
  • 详解实现vue的数据响应式原理

    详解实现vue的数据响应式原理

    这篇文章主要介绍了详解实现vue的数据响应式原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论