vue3 setup函数与setup语法糖之间的区别

news2025/1/23 14:53:41

普通setup函数构建的组件

import {ref} from 'vue'
    export default {
        setup(){

            const count=ref(0)

            const handleUpdate=()=>{
               count.value++
            }
          return{
               count,
                handleUpdate
          }
        }
    }
</script>

使用setup语法糖构建的组件

<script setup>
    import {ref} from 'vue'
    const count=ref(0)

    const handleUpdate=()=>{
        count.value++
    }
</script>

从代码简洁度上来说setup语法糖显然更有优势一些

我们构建一个base页面将这两个组件引入之后再看
在这里插入图片描述
1.我们在Base页面分别引入了两个组件,并定义了他们各自的ref
2.控制台输出我们获取的ref对象来比较一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
组件1 是我们获取的setup函数构建的界面,我们看到他与我们基础的vue2的实例获取没有什么差别,可以直观的看到组件内部的方法,以及定义的数据
在这里插入图片描述
组件2是使用了setup语法糖构建的,我们发现返回的时候一个空对象,我们无法直接获取或者查看到组件内的信息
为了更进一步看的编译过程中两个组件的内容变化我们使用一个插件vite-plugin-inspect
在这里插入图片描述
这个插件可以帮助我们在业务编写过程中实时查看我们的编译源码
在这里插入图片描述
打开后找到我们的测试组件
在这里插入图片描述
使用了setup函数编写后的文件发现模板已经不在存在而是变成了一个render函数的形式导出,而我们使用setup函数的部分没有任何变化还是原样输出的
在这里插入图片描述
我们再看使用了setup语法糖的组件我们发现模板还是一样变成了render函数导出,但是我们的setup语法糖先转成了一个setup函数,并被额外加上了一个expose()函数
官方对这个函数有很明确的说明
在这里插入图片描述
当我们使用setup语法糖开发时常常也会使用到一个跟他相关的宏,defineExpose
例如我们需要在业务子组件中暴露子组件的一些数据,方法

   const restInfo=()=>{
     tableData.value=[];
     selectMod.value=[];
     tools.value=[
       {
         name:"**",
         code:1,
         select:true,
       },
       {
         name:"**",
         code:2,
         select:false,
       }
     ]
   }
  defineExpose({
    tableData,
    selectMod,
    restInfo
  });

我们改变setup语法糖组件并给他添加这个宏命令后

<template>
    <div style="width:6.25rem;height:3.125rem;background: #e3c528">这是组件2</div>
</template>

<script setup>
    import {ref} from 'vue'
    const count=ref(0)

    const handleUpdate=()=>{
        count.value++
    }
    defineExpose({
        count
    })
</script>

<style scoped>

</style>

在这里插入图片描述
编译完的结果也加上了这个指定暴露的内容
在这里插入图片描述
重新刷新后我们发现此时组件2中的count也已经可以直接查看到。通过上述一系列的演示体现出了无论时从代码面上,还是底层编译上亦或者是内部使用过程中都存在一定的差异性。所谓的互相转换也并不是A==B的逻辑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1495371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

英福康INFICON真空计VGC012-103-401使用说明

英福康INFICON真空计VGC012-103-401使用说明

stl的基本知识学习

1.vector&#xff1a; 2.set&#xff1a; 3.map&#xff1a; 4.栈&#xff1a; 5.队列&#xff1a; 6. unordered_map与unordered_set: 7. 位运算&#xff1a; 8.cctype&#xff1a; 导图&#xff1a;

linux安装ngnix完整步骤(支持centos/银河麒麟操作系统)

linux安装ngnix&#xff08;支持centos/银河麒麟操作系统&#xff09; 本次操作系统安装ngnix采用离线或在线安装方式&#xff0c;离线就是不联网环境&#xff0c;在线则是联网环境&#xff1b;支持centos7或centos8或国产操作系统&#xff08;银河麒麟高级服务器操作系统&…

MySQl基础入门③

上一遍内容 接下来我们都使用navicat软件来操作数据了。 1.新建数据库 先创建我门自己的一个数据库 鼠标右键点击bendi那个绿色海豚的图标&#xff0c;然后选择新建数据库。 数据库名按自己喜好的填&#xff0c;不要写中文&#xff0c; 在 MySQL 8.0 中&#xff0c;最优的字…

kafka消费端消息去重方案

背景 我们在日常工作中&#xff0c;消费kafka消息是一个最常见的操作&#xff0c;不过由于kafka队列中经常包含重复的消息&#xff0c;并且消息量巨大&#xff0c;所以我们消费端总是需要先把消息进行去重后在消费&#xff0c;以减少消费端的压力&#xff0c;那么日常中我们一…

HTML静态网页成品作业(HTML+CSS)——安徽宣笔设计制作(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有6个页面。 &#x1f3f7;️想要…

FPGA开发之libero元件实例化详细步骤

FPGA开发之libero模块实例化详细步骤 第一步&#xff0c;假设已经建立了两个文件&#xff0c;现在需要将这两个文件连接在一起&#xff0c;如下图所示&#xff1a; 第二步&#xff0c;建立一个SD顶层文件&#xff0c;操作如下&#xff1a; 得到结果如下&#xff1a; 点击OK得…

OpenCV学习笔记(二)——OpenCV简介

目录 图像基础和简介 OpenCV简介 OpenCV的发展历史 OpenCV的应用 OpenCV的核心模块 图像基础和简介 人们通过肉眼所看见的世界是通过图像来呈现的&#xff0c;那么什么是图像呢&#xff1f;在计算机里面&#xff0c;最基本的组成单元就是像素&#xff0c;图像是很多像素的…

微信小程序用户登陆和获取用户信息功能实现

官方文档&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 接口说明&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html 我们看官方这个图&#xff0c;梳理一下用户…

css补充(上)

有关字体 1.所有有关字体的样式都会被继承 div {font-size: 30px;}<span>777</span> <div>123<p>456</p> </div>span中777是默认大小16px div设置了30px p作为div的后代继承了字体样式也是30px 2.字体颜色 div{color: red;border: 1px …

视频推拉流EasyDSS平台直播通道重连无法转推的原因排查与解决

视频推拉流EasyDSS视频直播点播平台&#xff0c;集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体&#xff0c;可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 用户使用EasyDSS平台对直播通道进行转推&#xff0c;发现只要关闭…

RabbitMQ使用SpringAMQP

简介 绝对的简单&#xff0c;绝对的易懂&#xff0c;方便初学者&#xff0c;更加利于理解和上手使用&#xff08;代码可直接复制粘贴进行使用&#xff09; 如有其它问题&#xff0c;大家可以留言或私聊。 主要为了给大家展示各个代码使用 如果需要更加完整的文档&#xff0…

关于 DevOps,如何应对IT服务交付中的问题?

文章目录 &#x1f4cb; 前言&#x1f3af; 如何应对IT服务交付中的问题&#xff1f;&#x1f3af;关于 DevOps 书籍推荐&#x1f4dd;最后&#x1f525; 参与方式 &#x1f4cb; 前言 DevOps 是一种软件开发方法论和实践&#xff0c;旨在通过缩短开发周期、提高交付速度和改进…

Pytorch 复习总结 6

Pytorch 复习总结&#xff0c;仅供笔者使用&#xff0c;参考教材&#xff1a; 《动手学深度学习》Stanford University: Practical Machine Learning 本文主要内容为&#xff1a;Pytorch 计算机视觉。 本文先介绍了计算机视觉中两种常见的改进模型泛化性能的方法&#xff1a…

和鲸科技受邀参与湖南省气象信息中心开展人工智能研究型业务支撑平台学术交流

为推进湖南省机器学习统一平台建设&#xff0c;2 月 29 日&#xff0c;湖南省气象信息中心开展学术讲座活动&#xff0c;活动由中心副主任冯冼主持&#xff0c;中心业务骨干、湖南省气象台、湖南分院等技术人员参加。 本次讲座邀请上海和今信息科技有限公司&#xff08;简称“…

STL容器之map和set的补充红黑树

三、红黑树 ​ 红黑树比起avl树是哟啊更优一点的。 3.1概念 ​ 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保…

DataFunSummit 2023:洞察现代数据栈技术的创新与发展(附大会核心PPT下载)

随着数字化浪潮的推进&#xff0c;数据已成为企业竞争的核心要素。为了应对日益增长的数据挑战&#xff0c;现代数据栈技术日益受到业界的关注。DataFunSummit 2023年现代数据栈技术峰会正是在这样的背景下应运而生&#xff0c;汇聚了全球数据领域的精英&#xff0c;共同探讨现…

华为数通方向HCIP-DataCom H12-821题库(多选题:101-120)

第101题 下面关于Network-Summary-LSA描述正确的是 A、Network-Summary-LSA中的Metric被设置成从该ABR到达目的网段的开销值 B、Network-Summary-LSA中 的Netmask被设置成目的网段的网络掩码 C、Network-Summary-LSA中的Link State ID被设置成目的网络的IP地址 D、Network-Sum…

项目一:踏上Java开发之旅(2023软件1班)

文章目录 一、实战概述二、实战步骤任务1&#xff1a;安装配置JDK开发第一个Java程序1、安装JDK2、配置Java环境变量3、开发第一个Java程序&#xff08;1&#xff09;编写源程序 - HelloWorld.java&#xff08;2&#xff09;编译成字节码文件 - HelloWorld.class&#xff08;3&…

网络原理TCP_IP

文章目录 应用层自定义协议 传输层udp协议TCP协议1.确认应答2.超时重传3.连接管理建立连接, 三次握手断开连接, 四次挥手tcp的状态 4.滑动窗口5.流量控制6.拥塞控制7.延时应答8.携带应答9.面向字节流10.异常情况 网络层IP协议地址管理路由选择 数据链路层以太网 应用层 自定义…