我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue3 使用defineExpose的实例详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue3 使用defineExpose的实例详解

可以通过 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 会和在普通实例中一样被自动解包)

例子

父组件

<template>
  <h2>defineExpose 使用 父组件</h2>
  <child ref="getChildData"></child>

</template>

<script setup lang="ts">
import Child from "@/components/exposeChildren.vue"
import { ref,onMounted,toRaw} from 'vue'
    // 文档说setup写在script上组件是关闭的
    // 也就是说父组件使用getChildData.xxx访问不到子组件的数据
    // 此时我们需要用defineExpose把需要传递的数据暴露出去,这样外部才能访问到
    // 同理也可以接收外部传来的值

const getChildData = ref(null)
const obj = {
    name: 'alan',
    desc: '大笨蛋',
    age: 18
}

const cc= getChildData.value?.['num']
console.log(cc) //undefined,此时还未找到子组件暴露的数据

onMounted(()=>{
  //获取子组件的data数据,什么时候获取根据自己业务来
  const bb:any= getChildData.value?.['updata']
  console.log(bb()) // 123,这时候得到的是子组件的初始值,因为还未给子组件传递数据
  const a:any= getChildData.value?.['getData'] 
  a(obj) ////给子组件传递数据
  const b:any= getChildData.value?.['updata']
  const c= getChildData.value?.['num']
  console.log(toRaw(b())) // {name: 'alan', desc: '大笨蛋', age: 18} ,这里得到的是个proxy,所以需要toRaw()方法转成对象 
  console.log(c) // 666
})


</script>
<style scoped>
</style>

子组件

<template>
  <h2>defineExpose 使用 子组件</h2>
  <div>{{ data }}</div>
</template>

<script setup lang="ts">
import { ref, defineExpose } from 'vue'

const data = ref(123)
const num = ref(666)
defineExpose({
    updata(){
        return data.value //暴露出去父组件可以拿到data的数据.此时值为123
    },
    getData(res:any){
        data.value = res //父组件传递来的值赋值给data
        // 此时的data变成了 Proxy
        //     {
        //     name: 'alan',
        //     desc: '大笨蛋',
        //     age: 18
        //     }
    },
    num
})
</script>
<style scoped>
</style>

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue3 使用defineExpose的实例详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue3 使用defineExpose的实例详解

这篇文章主要介绍了vue3 使用defineExpose的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-19

vue3 setup语法糖之组件传参(defineProps、defineEmits、defineExpose)示例详解

defineProps 和 defineEmits 都是只能在 <script setup> 中使用的编译器宏,他们不需要导入,且会随着 <script setup> 的处理过程一同被编译掉,这篇文章主要介绍了vue3 setup语法糖之组件传参(defineProps、defineEmits、defineExpose)示例详解,需要的朋友可以参考下
2023-01-28

Vue3 setup 的作用实例详解

setup 用来写组合式 API,从生命周期的角度,相当于取代了 beforeCreate(),这篇文章主要介绍了Vue3 setup 的作用,需要的朋友可以参考下
2022-12-29

Vue3 中路由Vue Router 的使用实例详解

vue-router是vue.js官方给出的路由解决方案,能够轻松的管理SPA项目中组件的切换,这篇文章主要介绍了Vue3 中路由Vue Router 的使用,需要的朋友可以参考下
2023-02-18

Vue3使用Swiper实现轮播图示例详解

这篇文章主要为大家介绍了Vue3使用Swiper实现轮播图示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-02-12

vue3-pinia-ts项目中的使用示例详解

这篇文章主要介绍了vue3-pinia-ts项目中的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-11-13

Vue3学习之表单的使用示例详解

这篇文章主要为大家详细介绍了Vue3中表单的使用的相关知识,文中的示例代码讲解详细,对我们掌握Vue3有一定的帮助,感兴趣的小伙伴可以跟随小编一起学习一下
2022-12-08

vue3响应式Proxy与Reflect的理解及基本使用实例详解

这篇文章主要为大家介绍了vue3响应式Proxy与Reflect的理解及基本使用实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

Vue3中watch的使用详解

这篇文章主要介绍了Vue3中watch的详解,主要包括Vue2使用watch及Vue3使用watch的方法,通过多种情况实例代码相结合给大家详细讲解,需要的朋友可以参考下
2022-11-16

Vue3跨域解决方案实例详解

这篇文章主要介绍了Vue3跨域解决方案详解,需要的朋友可以参考下
2023-01-28

KotlinViewModelProvider.Factory的使用实例详解

这篇文章主要介绍了KotlinViewModelProvider.Factory的使用,在我们使用ViewModel的时候,我们会发现,有的时候我们需要用到ViewModelFactory,有的时候不需要
2023-02-17

vue3使用el-upload上传文件示例详解

这篇文章主要为大家介绍了vue3使用el-upload上传文件实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-02-21

编程热搜

目录