掌握 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。如果你有闲暇时间,可以做个知识拓展。

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

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

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

相关文章

Unity生命周期函数解析

本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com Unity生命周期函数解析 Unity 生命周期函数是在游戏对象的不同阶段被调用的方法,通过这些函数,我们可以在不同的时刻执行特定的代码。在这篇文章中,我们将一步步解析 Unit…

Linux红帽rhce认证多少钱?考个RHCE难不难?

Linux作为开源操作系统的佼佼者,已经广泛应用于各个领域。红帽认证工程师(Red Hat Certified Engineer,简称RHCE)作为Linux领域权威的认证之一,自然成为了众多IT从业者追求的目标。那么,RHCE认证的培训费用是多少?考取这一认证又…

ElasticSearch仿京东搜索

一:爬取京东数据 package com.esjd.Utils;import lombok.SneakyThrows; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;import java.net.MalformedURLException; import java.net.…

Linux的条件变量

条件变量 条件变量本身不是锁,但是它可以造成线程阻塞。通常于互斥锁配合使用。给多线程提供一个会和的场合。 使用互斥量保护共享数据使用条件变量可以造成线程阻塞,等待某个条件的发生,当条件满足的时候解除阻塞。 条件变量的两个动作&a…

python 基础知识点(蓝桥杯python科目个人复习计划55)

今日复习内容:做题 例题1:体育健将 问题描述: 小蓝作为班级里的体育健将,他被安排在校运会时参加n个体育项目,第i个体育项目参赛需要耗时ai分钟,赛后休息需要bi分钟(这意味着当他参加完这场比…

【AIGC大模型】InstantID 赏析

论文地址:https://arxiv.org/abs/2401.07519 InstantID 主页:https://instantid.github.io/ Demo :https://huggingface.co/spaces/InstantX/InstantID code: InstantID/InstantID: InstantID : Zero-shot Identity-Preserving…

计算机组成原理-第一/二章 概述和数据的表示和运算【期末复习|考研复习】

文章目录 前言第一章 计算机组成原理 概述及各种码1.1 计算机硬件的基本组成1.1.1 存储器1.1.2 运算器1.1.3 控制器 1.2 计算机的工作过程1.3 计算机的性能指标1.4 各个字长区别与联系 第二章 数据的表示与运算2.1 ASCII码2.2 各种码2.3 浮点数 总结 前言 给大家整理了一下计算…

网络安全与代理技术:解密 SOCKS5、代理IP 和 HTTP

在当今数字化的世界中,网络安全问题备受关注。作为网络安全的重要组成部分,代理技术在保护个人隐私和网络安全方面发挥着关键作用。本文将以教授的身份,简明扼要地介绍 SOCKS5 代理、代理IP、HTTP 代理等关键词,帮助读者了解这些技…

雅特力AT32L021首款低功耗MCU震撼登场

雅特力于2月28日正式发布AT32L021首款入门级低功耗MCU,搭配不同容量Flash、SRAM,提供7种封装类型共21个型号选择,最小封装面积仅3x3mm。为降低能耗,延长设备运作时间,AT32L021系列支持多种能耗模式和休眠模式&#xff…

spark中dataframe起别名对join过程的影响

toDF().as("a").join(df2,Seq("seq1"),"right") .filter($"a.seq1".isNotNull)toDF().as("a").join(df2,Seq("seq1"),"right") .filter($"seq1".isNotNull)今天之前我认为这里不应该用别名&a…

2.29文件IO-进程 作业

1.要求将当前路径下&#xff0c;所有文件的权限及最后一次的访问时间提取出来&#xff0c;写入到file.txt中! !提示: opendir readir stat-->提取出来的数据写入到file.xt中 #include <stdio.h> #include <sys/types.h> #include <dirent.h> #include &l…

详解kubernetes中的Pod生命周期

目录 1.1 Pod生命周期概述 1.2 创建和终止 1.2.1 Pod的创建过程 1.2.2 Pod的终止过程 1.3 初始化容器 1.3.1 案例 1.4 容器探测 1.4.1 Exec示例 1.5 重启策略 1.1 Pod生命周期概述 Pod中的生命周期主要包含以下过程&#xff1a; pod创建过程 运行初始化容器&#xff…

Mysql Day07

存储过程 -- 存储过程基本语法 -- 创建 create procedure p1() begin select count(*) from student; end; -- 调用 call p1(); -- 查看 select * from information_schema.ROUTINES where ROUTINE_SCHEMA itcast; show create procedure p1; -- 删除 drop procedure if exis…

weak 的实现原理

iOS 在运行时维护着一个全局的弱引用表&#xff0c;该表是一个 hash 表&#xff0c;hash表的 key 是 weak 对象的地址&#xff0c;value 是指向该对象的所有 weak 指针的地址数组。 /**全局的弱引用表&#xff0c;本质是一个hash结构&#xff0c;object作为key, weak_entry_…

npm 设置取消代理

npm 设置淘宝镜像源&#xff1a;npm install -g cnpm --registryhttps://registry.npm.taobao.org npm 查看当前配置信息 npm config listnpm 设置代理 npm config set proxy 127.0.0.1:7890 npm config set https-proxy 127.0.0.1:7890删除代理信息 npm config delete pro…

TCP/UDP模型:2024/2/29

作业1&#xff1a;TCP模型 服务器端&#xff1a; #include <myhead.h> #define SER_IP "192.168.199.129" #define SER_PORT 8899int main(int argc, const char *argv[]) {//1.创建用于连接的套接字文件int sfdsocket(AF_INET,SOCK_STREAM,0);if(sfd-1){per…

【蓝桥杯】赢球票(模拟、枚举、搜索)

一.题目描述 某机构举办球票大奖赛。获奖选手有机会赢得若干张球票。 主持人拿出 N 张卡片&#xff08;上面写着 1~N 的数字&#xff09;&#xff0c;打乱顺序&#xff0c;排成一个圆圈。你可以从任意一张 卡片开始顺时针数数: 1,2,3..... 如果数到的数字刚好和卡片上的数字…

深入理解nginx的https alpn机制

目录 1. 概述2. alpn协议的简要理解2.1 ssl的握手过程2.2 通过抓包看一下alpn的细节3. nginx源码分析3.1 给ssl上下文设置alpn回调3.2 连接初始化3.3 处理alpn协议回调3.4 握手完成,启用http协议4.4 总结阅读姊妹篇:深入理解nginx的https alpn机制 1. 概述 应用层协议协商(…

基于Siamese网络的zero-shot意图分类

原文地址&#xff1a;Zero-Shot Intent Classification with Siamese Networks 通过零样本意图分类有效定位域外意图 2021 年 9 月 24 日 意图识别是面向目标对话系统的一项重要任务。意图识别(有时也称为意图检测)是使用标签对每个用户话语进行分类的任务&#xff0c;该标签…

Shell:字符串的截取和替换

#/bin/sha="hello, world, 88"echo ${a:0}echo ${a:2:3}echo ${a/l/ii}echo ${a//l/ii}echo ${a#he}echo ${a#*,}echo ${a##*,}echo ${a%88}echo ${a%,*}echo ${a%%,*} 运行程序输出: hello, world, 88 llo heiilo, world, 88 heiiiio, woriid, 88 llo, world, 88 w…