当前位置: 首页 > news >正文

掌握 Vue3 中的 setup 函数

Vue.js 经历了从 Vue 2 到 Vue 3 的重大变革,带来了许多引人注目的新特性和性能优化。其中,setup函数无疑是最引人瞩目的新星之一。

一、概览

setup函数是 Vue 3 引入的一个新的组件选项,作为组合式 API 中心,它允许开发者在一个空间内使用所有的 composition API。这个函数将在组件创建之前执行,这样就为你提供了定义响应式变量、计算属性、函数等的机会,从而更好地组织和复用代码。

import { ref, computed } from 'vue'export default {setup() {const count = ref(0)const doubleCount = computed(() => count.value * 2)function increment() {count.value++}return { count, doubleCount, increment }}
}

在上述代码中,通过setup函数,我们定义了一个响应式的count变量和一个基于count变量的计算属性doubleCount,以及一个increment方法来改变count的值。

二、为什么选择 setup 函数?

在 Vue 3 之前,我们主要通过选项 API(如datamethodscomputed等)来组织组件的逻辑。这在简单场景下工作得很好,但随着组件变得越来越复杂,代码就开始散布在不同的选项中,导致维护和理解的成本增加。setup函数提供了一个集中处理响应式数据、计算属性和函数等的场所,有助于保持代码的组织和清晰。

三、使用 setup 的最佳实践

适时使用响应式引用和计算属性

Vue 3 的响应式系统是基于 ES6 的 Proxy 实现的,通过refreactive这两个 API,你可以非常简洁地定义响应式数据。

掌握生命周期钩子的使用

setup函数中,Vue 3 提供了一套新的生命周期钩子函数,以on开头,如onMountedonUpdated等。了解并合理利用这些钩子函数,能够让你更精准地控制组件的行为。

import { onMounted } from 'vue'export default {setup() {onMounted(() => {console.log('组件挂载完成')})}
}

提供明确的返回对象

确保setup函数返回一个对象,这个对象中包含了所有需要暴露给模板和其他组件选项(如methods)使用的属性和方法。这保证了组件的其它部分可以无缝访问setup函数内定义的响应式状态和函数。

四、面临的问题与解决策略

响应式数据更新延迟

在一些情况下,你可能会遇到响应式数据更新的延迟问题。大部分情况下,这是由于数据更新的方式不当引起的。确保你使用了 Vue 的响应式 API,如refreactive来更新数据,而不是直接修改对象或数组。

代码组织

随着setup函数中逻辑的增加,组织代码成为了一个挑战。合理利用 JavaScript 的模块系统来拆分逻辑,保持setup函数的精简和清晰是个好策略。

五、结语

Vue 3 的setup函数开辟了 Vue 组件设计的新天地。通过深入理解和合理利用这一功能,你可以构建出既强大又易维护的 Vue 应用。

技术前沿拓展

前端开发,你的认知不能仅局限于技术内,需要发散思维了解技术圈的前沿知识。细心的人会发现,开发内部工具的过程中,大量的页面、场景、组件等在不断重复,这种重复造轮子的工作,浪费工程师的大量时间。

介绍一款程序员都应该知道的软件JNPF快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。

这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,实现快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。如果你有闲暇时间,可以做个知识拓展。

看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~

相关文章:

掌握 Vue3 中的 setup 函数

Vue.js 经历了从 Vue 2 到 Vue 3 的重大变革,带来了许多引人注目的新特性和性能优化。其中,setup函数无疑是最引人瞩目的新星之一。 一、概览 setup函数是 Vue 3 引入的一个新的组件选项,作为组合式 API 中心,它允许开发者在一个…...

BUUCTF AWD-Test1

打开靶场是这个有些简陋的界面。 随便点点,找到这个东西。 看到ThinkPHP,思路瞬间清晰,老熟人了。这个就是ThinkPHP漏洞。根据版本我们去找一下poc。 /index.php/?sIndex/\think\View/display&content%22%3C?%3E%3C?php%20phpinfo();…...

百亿诈骗案频出,欧科云链用“技术责任”拓宽Web3安全边界

2022年12月1日,《中华人民共和国反电信网络诈骗法》正式实施,中国正式迈入“全民反诈时代”。据CNNIC和智研咨询统计显示,截至2021年12月,国内网民遭遇网络诈骗比例为16.6%,数千万人深受网络诈骗的危害。 以新兴技术区…...

一个实时波形图的封装demo(QT)(qcustomplot)

前言: 封装的一个实时波形图的类,可以直接提升使用。 提供了接口,可以更改颜色,样式,等等 参考: Qt Plotting Widget QCustomPlot - Introduction 另外参考了一个大神的作品,链接没找到。 项目…...

Java进阶-反射

来学习一下Java的反射,通过Class实例获取class信息的方法称为反射(Reflection),内容如下 一、反射机制 1、概述 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一…...

力扣180 连续出现的数字

如何有效地识别在数据库中至少连续出现三次的数字? 目录 题目描述 解题思路 完整代码 进一步探索 题目描述 表:Logs ---------------------- | Column Name | Type | ---------------------- | id | int | | num | varch…...

C++面试 -操作系统-架构能力:内存问题分析与性能优化

内存问题分析: 内存泄漏: 描述什么是内存泄漏,以及它如何在 C 中发生。使用工具(如 Valgrind、AddressSanitizer)来检测和定位内存泄漏。如何预防内存泄漏?使用智能指针、正确释放资源等。 野指针和悬挂指针…...

基于springboot+vue的共享汽车管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…...

All Roads Lead to Rome (30)

1、题目: Indeed there are many different tourist routes from our city to Rome. You are supposed to find your clients the route with the least cost while gaining the most happiness. Input Specification: Each input file contains one test case. For…...

GO语言学习笔记(与Java的比较学习)(四)

结构体 一个结构体(struct)就是一组字段(field)。 package main ​ import "fmt" ​ type Vertex struct {X intY int } ​ func main() {fmt.Println(Vertex{1, 2}) } 结构体中的字段用 . 访问 package main ​ im…...

在实训云平台上配置云主机

文章目录 零、学习目标一、实训云升级二、实训云登录(一)登录实训云(二)切换界面语言(三)规划云主机实例 三、创建网络三、创建路由器2024-2-29更新到此四、添加接口五、创建端口六、添加安全组规则七、创建…...

什么是隔离式栅极驱动器?

在电子设备领域,“驱动”一词占据着至关重要的地位,充当推动信号、控制和电源的力量。这个复杂世界中的一个重要组件是隔离式栅极驱动器,这项技术在确保各种电子系统高效、安全运行方面发挥着关键作用。 什么是栅极驱动器? 从本质…...

蓝桥杯算法赛 第 6 场 小白入门赛 解题报告 | 珂学家 | 简单场 + 元宵节日快乐

前言 整体评价 因为适逢元宵节,所以这场以娱乐为主。 A. 元宵节快乐 题型: 签到 节日快乐,出题人也说出来自己的心愿, 祝大家AK快乐! import java.util.Scanner;public class Main {public static void main(String[] args) {System.out.println(&qu…...

附加Numpy数组

参考:Append Numpy Array 引言 在数据科学和机器学习领域,处理大规模数据集是一项重要且常见的任务。为了高效地处理数据,numpy是一个非常强大的Python库。本文将详细介绍numpy中的一个重要操作,即如何附加(append&a…...

收银系统源码-智慧新零售,ERP进销存功能详解

智慧新零售是一套线下线上一体化的收银系统,不仅给门店线下提供了多样化的收款方式,还提供了和线下深度打通的线上小程序商城。有线下又有线上自然需要一套完整的进销存模块能高效的管理商品。 智慧新零售进销存功能涵盖了商品的采购、销售、调拨、盘点…...

STM32使用PB3, PB4引脚的注意事项

STM32的PB3, PB4引脚作为GPIO引脚需要注意,因为他们默认分别是JTDO和NJTRST引脚。 笔者在设计可调增益增益放大器(VGA)的时候,使用4个GPIO读取外部控制电压,根据约定的编码格式设定DAC的输出电压,从而设置V…...

OSCP靶场--DVR4

OSCP靶场–DVR4 考点(1.windows:路径遍历获取私钥getshell 2.ssh shell中runas切换用户) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.161.179 --min-rate 2000 Starting Nmap 7.92 ( https://nmap.org ) at 2024-02-29 07:14 EST…...

【嵌入式——QT】日期与定时器

日期 QTime:时间数据类型,仅表示时间,如 16:16:16;QDate:日期数据类型,仅表示日期,如2024-1-22;QDateTime:日期时间数据类型,表示日期和时间,如2…...

如何决定使用HashMap还是TreeMap?

使用 HashMap 还是 TreeMap 取决于你的需求和对数据结构的理解。 HashMap: 快速插入和查找:HashMap 提供了常数时间(O(1))的插入和查找操作,因此对于需要快速插入和查找的场景非常适用。无序性:HashMap 不保…...

平台工程与安全

平台工程不是为了取代DevOps,而是DevOps的进一步演进和发展。本文介绍了DevOps和平台工程,以及对于安全的意义。原文: Platform Engineering and Security: A Very Short Introduction 中国云南大理的日落 我是一名 DevOps 工程师,个人还是希…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...