Vue3.2中的setup语法糖(易懂)

news2024/10/6 18:20:37

简介

在vue3中删除了vue2中的data函数,因此,vue3.0要在template中使用某些变量就必须在最后return出来,多次声明变量,不太方便。而在vue3.2版本之后,新增了setup语法糖。
直接在script标签中添加setup属性就可以直接使用setup语法糖了。

setup使用

使用setup语法糖后,不用写setup函数;组件只需要引入不需要注册;属性和方法也不需要再返回,可以直接在template模板中使用。

父组件:

<template>
    <div>我是父组件</div>

  <div>大家好我是{{name}}</div>
  <button @click="updateName">点我改名字</button>

    <!-- 直接使用引入的组件 -->
    <Children/>
</template>

<script setup>
import Children from "./children.vue"
import { ref} from "vue"

//定义响应式数据
const name = ref("张三")
console.log(name.value)

//定义绑定的函数
function updateName(){
 name.value = "你好啊,紫陌"
}

</script>

子组件:

<template>
  <div>我是子组件</div>
</template>

<script>

</script>

运行结果:
在这里插入图片描述

script setup 是 vue3.2 的新语法糖,并不是新增的功能模块,主要好处有:

  1. 更少的模板内容,代码简洁,不需要写return;
  2. 能够使用ts更好的声明props,以及抛出事件;
  3. 更好的运行时性能。

setup语法糖中新增的api

因为没有了setup函数,那么props,emit怎么获取呢?setup script语法糖提供了新的API来供我们使用。

  1. defineProps:子组件接收父组件中传来的props
  2. defineEmits:子组件调用父组件中的方法
  3. defineExpose:子组件暴露属性,可以在父组件中拿到

defineProps

父组件:

<template>
    <div>我是父组件</div>

    <!-- 直接使用引入的组件 -->
    <Children :age=18 />
</template>

<script setup>
import Children from "./children.vue"

</script>

子组件:

<template>
  <div>我是子组件</div>

  <div>我的年龄是:{{age}}</div>
</template>

<script setup>
//定义props
const props = defineProps({
    age:{
        type:Number,
        default:0
    }
})
</script>

运行结果:
在这里插入图片描述
直接打印父组件传过来的值。

defineEmits

defineEmits 子组件向父组件事件传递

子组件:

<template>
  <div>我是子组件</div>

    <button @click="showInfo">展示信息</button>

</template>

<script setup>

//绑定函数,并且发出事件
const emit = defineEmits(['infoBtn'])
function showInfo(){
    emit("infoBtn","showInfo发生了点击")
}
</script>

父组件:

<template>
    <div>我是父组件</div>

    <!-- 直接使用引入的组件 -->
    <Children @infoBtn="func"/>
</template>

<script setup>
import Children from "./children.vue"

function func(val){
 console.log("父组件监听到了点击",val);
}
</script>

运行后点击的效果:

在这里插入图片描述

defineExpose

子组件:

<template>
  <div>我是子组件</div>

</template>

<script setup>
import {ref ,reactive} from "vue"

//定义子组件的变量
let age = ref(18)
let name = reactive({
    name : "紫陌"
})

//暴露子组件的变量
defineExpose({
    age,
    name
})

</script>

父组件:

<template>
    <div>我是父组件</div>

    <!-- 直接使用引入的组件 -->
    <Children ref="info"/>
    <button @click="showInfo">展示</button>
</template>

<script setup>
import Children from "./children.vue"
import { ref } from "vue";

//注册ref,获取组件实例
const info = ref()

function showInfo(){
    console.log('接收ref暴漏出来的值',info.value.age)
    console.log('接收reactive暴漏出来的值',info.value.name)
}
</script>

代码运行结果:
在这里插入图片描述

总结

script setup语法糖确实很香!模板的内容更少,代码更简介,因此很有学习的必要,小伙伴们赶紧行动学起来吧。这里写了几个常用的语法糖用法,其他的一些用法可以自己学习,文章有写的不当的地方,欢迎指正修改。如果感觉文章实用对你有帮助,欢迎点赞收藏和关注,你的点赞关注就是我动力,大家一起学习进步。

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

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

相关文章

Arduino开发实例-DIY电能表

DIY电能表 在本文中,将展示如何制作一个基于 Arduino 的功率和电能表。应用使用 INA219 电流传感器测量电流、功率和能耗,并将其显示在 OLED 显示屏上。 可以在 OLED 显示屏上查看您的电压、电流、功率和能量数据。 1、INA219介绍 INA219 电流传感器是一款支持 I2C 的基于…

Unity手机游戏发热发烫优化指南与技巧

Unity手机游戏发热发烫优化指南与技巧 很多小伙伴做完游戏后&#xff0c;发布到Android,运行&#xff0c;游戏很流畅&#xff0c;也不卡顿&#xff0c;但是跑一会游戏,手机就发热,发烫。客户提出需求&#xff0c;能否让它不发烫? 本文从以下3方面来分析手机发烫的问题&#x…

如何用一颗芯片实现5V转正负12V

有时在一些运算放大电路中我们需要同时有正电源和负电源&#xff0c; 但是我们输入一般只有一个正电源&#xff0c;比如我们输入的电源是5V&#xff0c;但是需要将5V转换成正负12V 5V转12V的话我们可以用BOOST电路进行升压&#xff0c;电路图如下 而5V转-12V的话一般有负压电荷…

osgEarth示例分析——osgearth_tracks

前言 osgearth_tracks示例&#xff0c;演示了所有图标沿着路径进行移动(路径是不可见的)。 执行效果 执行命令&#xff1a;osgearth_tracksd.exe earth_image\world.earth 右下角的控制面板功能&#xff1a; Declutter 是否开启 【清理器】 功能。 即当两个图标靠近时&…

HTML期末学生大作业-使用HTML+CSS技术仿传智博客网站

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

今日财富杂志今日财富杂志社今日财富编辑部2022年第21期目录

经济纵横 资产证券化税收政策的国际比较与启示 李依莎; 1-3 中小企业知识产权保护的困境 程诗鸿; 4-6 县级政府在优化营商环境中的作用 李晓春; 7-9《今日财富》投稿&#xff1a;cnqikantg126.com 地域文化背景下论房地产经济发展的区域差异 周莹; 10-12 国…

这把联网智能门锁体验感A+

如果来一次古人与今人的谈话&#xff0c;那一定离不开的话题就是“智能设备”。智能手机、智能电脑、智能手表更新换代如此之快&#xff0c;联网智能门锁亦是如此。对于用户而言&#xff0c;使用智能设备最重要的就是“体验感”了&#xff0c;小编为大家强势推荐中科易安QY-170…

开源多波束前视声呐目标识别数据集

鉴于水下实验的高成本&#xff0c;高专业性&#xff0c;高复杂度的情况&#xff0c;开源水下数据集一直较为稀少。拥有数据的研究机构基本上也只限于自身使用。虎鲸开源计划致力于构建一个开放的实验平台&#xff0c;实验场地、硬件、软件、数据均在开源开放的范畴内。虎鲸开源…

Spring Cloud(十四):微服务灰度发布 --- Discovery

灰度发布微服务全链路灰度全链路灰度设计思路 标签路由节点打标流量染色分布式链路追踪 ThreadLocal流量治理平台 Nacos 配置中心 全链路灰度实现Discovery使用 一、父pom引入Discovery二、Gateway 引入 — 网关 discovery-plugin-strategy-starter-gateway三、微服务 引入 — …

[附源码]JAVA毕业设计论文管理系统(系统+LW)

[附源码]JAVA毕业设计论文管理系统&#xff08;系统LW&#xff09; 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a;…

Allegro如何使用快捷键快速切换层面操作指导

Allegro如何使用快捷键快速切换层面操作指导 Allegro可以用快捷键快速切换层面,比如在command下方输入数字1,可以自动打开top层 具体操作如下 打开系统属性,选择环境变量 找到home的环境变量的路径是哪里 找到路径下的pcbenv文件夹 找到env文件 用记事本打开env文件…

自学软件测试,学到什么程度可以出去找工作?

其实初级测试学的东西并不多&#xff0c;如果脱产学习的话2~3个月差不多就能简单入门。 另外不要担心&#xff0c;初级测试对于Python/Java编程&#xff0c;自动化测试&#xff0c;性能测试这些都是初步的了解和学习。如果说要深度掌握&#xff0c;那确实是还需要很多时间。 …

【pen200-lab】10.11.1.10

pen200-lab 学习笔记 【pen200-lab】10.11.1.10 🔥系列专栏:pen200-lab 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年12月5日🌴 🍭作者水平很有限,如果发现错误,还望告知,感谢! 文章目录 pen200-lab 学习笔记信息收集拓展信息收集 只开放了…

61张图,图解Spring事务,拆解底层源码

下面我会简单介绍一下 Spring 事务的基础知识&#xff0c;以及使用方法&#xff0c;然后直接对源码进行拆解。 不 BB&#xff0c;上文章目录。 ​1. 项目准备 需要搭建环境的同学&#xff0c;代码详见&#xff1a;https://github.com/lml200701158/program_demo/tree/main/spr…

09-18-k8s-二进制方式搭建

09-k8s-二进制方式搭建&#xff1a; 1、创建多台虚拟机&#xff0c;安装Linux操作系统 &#xff08;1&#xff09;一台或多台机器&#xff0c;操作系统 CentOS7.x-86_x64 &#xff08;2&#xff09;硬件配置&#xff1a;2GB 或更多 RAM&#xff0c;2 个 CPU 或更多 CPU&…

大数据_数据中台_数据汇聚联通

目录 一、数据采集、汇聚的方法和工具 1、线上行为采集 2、线下行为采集 3、互联网数据采集 4、内部数据汇聚 二、数据交换产品 1、数据源管理 2、离线数据交换 3、实时数据交换 三、数据存储的选择 1、在线与离线 2、OLTP与OLAP 3、存储技术 构建企业级的数据中台…

Java swing(GUI) mysql实现的仓库进销存管理系统源码+运行教程

今天给大家介绍下由Java swing mysql实现的一款仓库库存管理系统&#xff0c;该系统实现了基本的仓库进退货管理、用户管理等操作&#xff0c;主要涉及的知识点有&#xff1a;Java swing awt界面编程、数据库的基本操作&#xff08;增删改查&#xff09;&#xff0c;多线程等&a…

第十二章:synchronized与锁升级

相关面试题锁优化背景Synchronized 锁性能变化jdk5 以前复习&#xff1a;为什么任意一个对象都能成为锁&#xff1f;jdk6 之后synchronized的种类以及锁升级流程锁升级流程无锁偏向锁是什么作用小总结偏向锁的持有偏向锁 JVM 参数说明多线程环境下总结轻量级锁轻量级锁的获取代…

Java成员方法的声明和调用

声明成员方法可以定义类的行为&#xff0c;行为表示一个对象能够做的事情或者能够从一个对象取得的信息。类的各种功能操作都是用方法来实现的&#xff0c;属性只不过提供了相应的数据。 一个完整的方法通常包括方法名称、方法主体、方法参数和方法返回值类型&#xff0c;其结…

6-脱氧-β- L -半乳吡喃糖基鸟苷 5′-二磷酸,Guanosine 5‘-diphospho-fucose,GDP-BETA-L-FUCOSE

产品名称&#xff1a;6-脱氧-β- L -半乳吡喃糖基鸟苷 5′-二磷酸&#xff0c;GDP-L-岩藻糖&#xff0c;GDP-L-FUCOSE二钠盐 英文名称&#xff1a;Guanosine 5-diphospho-fucose&#xff0c;GDP-BETA-L-FUCOSE&#xff0c;GDP-L-Fuc.2Na CAS号:148296-47-3 英文同义词:Guanos…