Vue3 setup函数的使用

news2025/8/2 9:43:01

全新的 setup 函数
在开始编写 Vue 组件之前,需要了解两个全新的前置知识点:

全新的 setup 函数,关系到组件的生命周期和渲染等问题
写 TypeScript 组件离不开的 defineComponent API

setup 的含义
Vue 3 的 Composition API 系列里,推出了一个全新的 setup 函数,它是一个组件选项,在创建组件之前执行,一旦 props 被解析,并作为组合式 API 的入口点。

说的通俗一点,就是在使用 Vue 3 生命周期的情况下,整个组件相关的业务代码,都可以放在 setup 里执行。

因为在 setup 之后,其他的生命周期才会被启用(点击了解:组件的生命周期)。

基本语法:

// 这是一个基于 TypeScript 的 Vue 组件
import { defineComponent } from 'vue'

export default defineComponent({
  setup(props, context) {
    // 在这里声明数据,或者编写函数并在这里执行它

    return {
      // 需要给 `<template />` 用的数据或函数,在这里 `return` 出去
    }
  },
})

在使用 setup 的情况下,请牢记一点:不能再用 this 来获取 Vue 实例,也就是无法和 Vue 2 一样,通过 this.foo 、 this.bar() 这样来获取实例上的数据,或者执行实例上的方法。

setup 的参数使用

setup 函数包含了两个入参:
在这里插入图片描述
第一个参数 props :

它是响应式的,当父组件传入新的数据时,它将被更新。

TIP

请不要解构它,这样会让数据失去响应性,一旦父组件发生数据变化,解构后的变量将无法同步更新为最新的值。

可以使用 Vue 3 全新的响应式 API toRef / toRefs 进行响应式数据转换

第二个参数 context :

context 只是一个普通的对象,它暴露三个组件的 Property :
在这里插入图片描述
因为 context 只是一个普通对象,所以可以直接使用 ES6 解构。

平时使用可以通过直接传入 { emit } ,即可用 emit(‘xxx’) 来代替使用 context.emit(‘xxx’),另外两个功能也是如此。

但是 attrs 和 slots 请保持 attrs.xxx、slots.xxx 的方式来使用其数据,不要进行解构,虽然这两个属性不是响应式对象,但对应的数据会随组件本身的更新而更新。
defineComponent 的作用
defineComponent 是 Vue 3 推出的一个全新 API ,可用于对 TypeScript 代码的类型推导,帮助开发者简化掉很多编码过程中的类型声明。

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

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

相关文章

计算机网络---应用层概述

&#xff08;一&#xff09;应用层概述 基本定义&#xff1a; 应用层&#xff08;Application layer&#xff09;是OSI模型的第七层。应用层直接和应用程序接口并提供常见的网络应用服务。应用层也向表示层发出请求。应用层是开放系统的最高层,是直接为应用进程提供服务的。其…

数据可视化设计经验分享:10分钟做出炫酷数据大屏

又快到年终了&#xff0c;数据大屏作为一个数据管理的分析工具&#xff0c;在年底数据大屏的制作需求日益增加。在一些公司比如银行、证券、医院、外贸等“数据大户”&#xff0c;在数据大屏的应用上更是有大量需求。 在接下来的两个月&#xff0c;许多人会感到痛苦吧&#xf…

.net---继承和多态

继承和多态继承和多态的基本概念继承继承的类型实现继承接口继承继承派生类base关键字构造函数的调用类成员的继承类成员的隐藏继承&#xff1a;虚方法和隐藏方法抽象类和抽象方法抽象类抽象方法密封类和密封方法密封类接口接口成员接口实现多态重载重写继承和多态的基本概念 …

NIO中ByteBuffer

// Invariants: mark < position < limit < capacityprivate int mark -1;private int position 0;private int limit;private int capacity; 从源码中可以看出&#xff0c;ByteBuffer的几个实例变量。我们稍后会详细解析这几个变量的意义。 在我们刚创建ByteBuff…

绿色积分消费时代来临,共享购跟随国家的号召

近年来&#xff0c;中国共享经济商业模式不断发展成熟。自2016年国家“十三五”规划纲要首次提出“共享经济”概念以来&#xff0c;中国政府不断助推共享经济发展。最新发布的《共享经济指导原则与基本框架》为共享经济作出定义&#xff1a;共享经济即“资源供给者通过平台与资…

IDEA配置Maven

1. IDEA配置Maven环境 先在IDEA中配置Maven环境&#xff1a; 选择 IDEA中 File --> Settings 搜索 maven 设置 IDEA 使用本地安装的 Maven&#xff0c;并修改配置文件路径 2. IDEA 创建 Maven项目 创建模块 创建模块&#xff0c;选择Maven&#xff0c;点击Next 填写模块名称…

你不知道的Spring的依赖的查找和注入的来源

1.写在前面 前面的博客我们已经介绍完了spring的依赖的查找和注入的方式&#xff0c;这篇博客我们主要介绍下spring的依赖的查找和注入的来源。 2.依赖查找的来源 查找来源 Spring 內建 BeanDefintion Spring 內建单例对象 上面的各种依赖都是在spring的生命周期的过程中&am…

干掉可恶的弹窗广告——windows系统

一、背景 许多国产软件为了生计&#xff0c;内嵌了无数广告。有些弹窗广告是可以在软件的设置里关闭的&#xff0c;但有些是流氓类型&#xff0c;无法设置。 1、有些是右下角弹窗&#xff0c;不提供关闭的设置&#xff08;能在图片上显示广告来源已经是比较良心了&#xff09…

金融机器学习:数据集划分与baseline模型

原创文章第115篇&#xff0c;专注“个人成长与财富自由、世界运作的逻辑&#xff0c; AI量化投资”。 在模型训练过程中&#xff0c;过拟合&#xff08;overfitting&#xff09;是非常常见的现象。所谓的overfitting&#xff0c;就是在训练集上表现很好&#xff0c;但是测试集…

学弟:功能测试转测试开发容易吗?

最近看到后台留言问&#xff1a;功能测试转测试开发容易吗&#xff1f; 从这个问题&#xff0c;我能读出一些信息如下&#xff1a; 不知道你从事测试工作多久了&#xff0c;可以看出您特别羡慕测试开发工程师&#xff1b;你可能一直从事功能测试工作&#xff0c;工作模式或大…

关于对 DeferWindowPos 的理解

DeferWindowPos 这个 API 的目标是&#xff1a;同一时间&#xff0c;移动多个子窗口。这在一定程度上减少了窗户移动时进行的重绘工作量。 修改我们之前的例子代码&#xff0c;如下图所示&#xff1a; >> 请移步至 topomel.com 查看图片 << 请注意&#xff0c;我…

基于蚁群算法的时延Petri网(ACOTPN)路径规划算法(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

ImmunoChemistry艾美捷抗体涂层缓冲液解决方案

使用ImmunoChemistry艾美捷ICT的抗体涂层缓冲液来节省试剂&#xff0c;增强特定信号&#xff0c;并延长涂层板的保质期。抗体涂层缓冲液最大限度地将抗体吸附到聚苯乙烯板上&#xff0c;并稳定抗体的三维结构以获得最佳性能。 ImmunoChemistry抗体涂层缓冲液&#xff0c;5X通过…

Debian11.5安装Podman并以多容器方式搭建LEMP环境

起因&#xff1a;之前在CentOS系统时代&#xff0c;写过一篇采用docker搭建LEMP环境的博客。现在时过境迁&#xff0c;CentOS系统&#xff0c;CoreOS系统&#xff0c;Docker&#xff0c;Podman管理工具的地位和应用&#xff0c;都有了极大变化&#xff0c;而我也转到了更为自由…

3d-face-reconstruction比较

摘要&#xff1a;比较近3年&#xff0c;6篇顶会3d-face-reconstruction重建效果。 1:Deep3D **发表时间:**2020 成就&#xff1a; 1&#xff09;在REALY和REALY (side-view)两个Benchmark上取得 State-of-the-art。 2&#xff09;官方github上成绩&#xff1a; 3DMM&#xf…

【学习笔记27】JavaScript字符串方法的练习

JavaScript字符串方法的练习一、统计字符串中每个字符出现的次数(以对象的形式记录)1、拿到字符串所有的值2、累加统计次数3、小优化二、反转字符串三、替换违禁词1、需求:将字符串中的6666, 替换为 "****"2、需求: 批量替换违禁词 [6666, 777]四、查询字符串1、模拟…

安全自动化企业网络架构 (毕设分享)

一、前言&#xff1a; 前段时间完成了自己的毕设项目——安全自动化企业网络架构。总的来说&#xff0c;该项目是一个对自己的挑战&#xff0c;其中涉及到Kubernetes容器云的搭建以及安全加固&#xff0c;DevOps CI/CD部署容器化监控平台&#xff0c;Django自动化运维平台开发…

CSS3------盒模型

盒模型 每个标签在浏览器上都被渲染成一个矩形个盒子&#xff0c;这个盒子有一个标准都组成结构&#xff0c;我们称为标准盒模型 盒模型构成 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <meta name&qu…

【MM小贴士】物料主数据的中止与后继(2)

【日常吐槽】项目要上线了&#xff0c;70w的物料主数据导完了&#xff0c;有一部分小伙伴被隔离了&#xff0c;没人陪我玩&#xff0c;所以再补充几点日常blog。 很久以前发票了一篇博客&#xff0c;是关于物料主数据的中止与后继&#xff0c; 前期的blog可以参考【MM小贴士】…

Euler diagram

An Euler diagram (/ˈɔɪlər/, OY-lər) is a diagrammatic means of representing sets and their relationships. They are particularly useful for explaining complex hierarchies and overlapping definitions. They are similar to another set diagramming techniqu…