vue3 script setup 语法糖用了才知道有多爽 (三)
创始人
2025-05-31 15:42:23
0

文章目录

    • 4. context 之 slots 和 attrs
      • setup() 中的 context参数
      • 已经弃用的 useContext()
    • 5. defineExpose()
      • 小结


这里是完整的目录图片,由于整篇文章篇幅太长,拆分成了几篇来展示
在这里插入图片描述

4. context 之 slots 和 attrs

setup() 中的 context参数

我们都知道在 Vue3 语法当中 setup() 的第一个参数是 props,第二个参数是 context
props 用 defineProps API 来替换掉了
而 context 是一个对象,并且这个对象中有三个属性,分别是 attrs, slots, emit
当我们需要事件派发的时候,直接使用 emit 就可以了
那么 setupContext.attrs 以及 setupContext.slots 在 script setup 语法当中应该怎样使用呢?


useSlots 和 useAttrs 是真实的运行时函数,它的返回与 setupContext.slots 和 setupContext.attrs 等价。
它们同样也能在普通的组合式 API 中使用。

已经弃用的 useContext()

在查找相关资料的时候有看到关于 useContext() 的用法 (可以通过 useContext() 从上下文中获取 emit slots 和 attrs),但是现在关于 useContext 已经弃用了,废除了这个语法,被拆分成上面的 useAttrs 和 useSlots
以下图片来自别的参考资料,但是现在已经弃用了
在这里插入图片描述
测试使用报错 : The requested module '/node_modules/.vite/deps/vue.js?v=8da96c73' does not provide an export named 'useContext' (at child.vue:6:33)



在这里插入图片描述
在这里插入图片描述

5. defineExpose()

Vue 3 可以利用 expose 结合 ref 来让父组件使用子组件的数据 ( 可以对数据进行修改 )和方法
在 Vue 3 的新特性中,如果使用的是 options api 类型的组件,在不声明 expose 的时候,默认暴露当前组件实例的全部内容 (所有的属性和方法),如果使用 expose 选项的话,只有 expose 中的内容才会暴露 (expose:[ ] 就表示什么都不暴露,可以利用这个特性来提高组件的使用规范 )
如果使用的是 setup script 的语法糖, 默认是关闭 expose 的, 子组件未暴露的数据以及方法在父组件中无法直接获取引用,需要子组件使用 defineExpose 将其主动暴漏出来

Vue 3 setup() 语法

父组件



子组件




子组件



就像这个例子子组件中暴露的这样,将属性 msg , 方法 m1 暴露出来,父组件通过 ref 获取到子组件的实例就可以访问到了

小结

  • defineExpose 可以直接使用,无需引入
  • 当父组件通过模板引用的方式获取到当前组件的实例,获取到的实例会像是这个样子的 {a:number,b:number} (ref 会和在普通实例中一样被自动解包)

vue3 script setup 语法糖用了才知道有多爽 (一)
vue3 script setup 语法糖用了才知道有多爽 (二)

相关内容

热门资讯

胡大餐饮走出特色经营新路径:平... 作为北京簋街最具代表性的地标性餐饮品牌之一,胡大饭馆自1999年创立以来,始终坚持“守正创新、甄选食...
亚投行成功发行20亿元熊猫债,... 新华社北京7月22日电(记者任军、吴雨)亚洲基础设施投资银行(亚投行)近日在银行间市场发行20亿元2...
大庄园肉业二度冲刺A股IPO:... 瑞财经 刘治颖 近日,大庄园肉业集团股份有限公司(以下简称:大庄园肉业)披露关于首次公开发行股票并上...
布局低空,布局引领全球的万亿赛... 当前新质生产力相关的产业已成为最引人注目成长赛道,在众多新质生产力产业中,低空经济是少有的由我国引领...
特斯拉超级充电站餐厅开业,马斯... IT之家 7 月 22 日消息,特斯拉超级充电站餐厅(Supercharger Diner)今日在洛...
算力需求持续火热,人工智能ET... 截至2025年7月22日收盘,中证人工智能产业指数(931071)下跌0.82%。成分股方面涨跌互现...
一图解码:港股IPO一周回顾 ... 过去一周(2025.7.14-7.20),港股IPO市场共有3家公司递交了上市申请,分别为麦济生物、...
最强赛道,呈两极分化!有的猛增... 创新药赛道行情爆火的同时,医药基金的“留人能力”却呈现两极分化。 券商中国记者注意到,根据最新披露的...
菲律宾要失望了,知情人士:美国... 本月初,美国总统特朗普公布多国关税税率,其中,对菲律宾产品征收的“对等关税”从今年4月公布的17%升...
2025年广东省乡村旅游消费趋... 2024年,广东省乡村旅游接待游客5.1亿人次,占全省总旅游接待人次的58.6%;乡村旅游收入达37...
高晓峰:趋势线守卫战告捷 黄金... 来源:市场资讯 7月22日,国际黄金本周初受美元走软及贸易局势影响强势走高。美国通胀数据低于预期,黄...
原创 美... 在我们的日常生活中,电力早已融入了方方面面。我们习惯了出门时确保手机电量充足,家里需要WiFi的连接...
复牌“摘帽”!基金公司第一时间... 【导读】复牌当天再遭基金公司“补刀”,招商基金下调诺泰生物估值 中国基金报记者 若晖 因涉及财务造假...
24年老将、前公募总经理“奔私... 【导读】携手老同事创业,原公募总经理宋小龙备案上海理泉私募基金 中国基金报记者 吴君 又见公募基金总...
科创板开市6周年:已拥有589... 7月22日,科创板迎来开市6周年。这个中国资本市场最年轻的板块已经拥有589家上市公司、超7万亿元总...
科创板六周年!上市公司“掌门人... 【导读】 2025年7月22日,中国资本市场这片热土上,一块名为“科创板”的“试验田”已悄然耕耘六载...
聚焦"稳"... 北京2025年7月22日-- 当前,中国经济正经历深刻转型升级,企业面临市场波动、竞争加剧等多重挑战...
华泰柏瑞港股通时代机遇混合A:... AI基金华泰柏瑞港股通时代机遇混合A(011355)披露2025年二季报,第二季度基金利润292.6...