setup函数相关【3】

目录

  • 1.setup函数:
      • 1.概述:
      • 2.案例分析:
  • 2.setup函数的优化:(setup语法糖)
      • 优化1:
      • 优化2:
        • 安装插件:
          • 安装指令:只对当前项目安装
          • 配置vite.config.ts:
        • 代码编写:

1.setup函数:

1.概述:

  • setup 是Vue3中一个新的配置项,他是一个函数,是组合式API的舞台,组件中所用到的 数据 方法 计算属性 监视属性等都在setup函数中;
  • setup 函数中 返回的对象中的内容,可以在模板中直接使用;
  • setup 函数中的this 是undefined,因此在setup函数中不使用this;
  • setup 函数 会beforeCreate之前调用,领先所有的钩子执行的;

2.案例分析:

   在vue3开始学习的时候我们搭建了一个简单的vue项目,但实际上我们是通过vue2语法来编写的,也就是将数据放置在data属性中,方法放置在methods属性中这种分散的语法;在vue3中我们将这些数据,方法等全部放置在setup函数中;
<template><h2>名称:{{ name }}</h2><h2 v-text="'地址:'+address"></h2><button @click="changeName">更新名称</button>
</template><script>
export default {name: "School",setup() {console.log("setup函数执行了")//声明(默认是 非响应式的) 变量  并 赋值let name = "猿究院";let address = "北大街";//不能使用this 是 undefined// console.log(this)// function changeName() {}const changeName = () => {console.log("更新name属性:", name);name += "~";}return {//返回变量  可以在模板中直接使用name, address, changeName}},beforeCreate() {console.log("生命周期函数 beforeCreate")}
}</script><style scoped></style> 
<template>
<School></School>
</template><script>import School from "./School.vue"
export default {name: "App",components: {School}
}
</script><style scoped></style>

说明:在上述案例的school.vue组件中,我们将此组件的数据,及事件的回调函数全部写到了setup函数中,并将数据和回调函数写到了setup函数的return属性中,注意,setup函数中的数据及方法必须在return中返回,才能在模板中直接使用

通过测试结果发现,可以正常将数据渲染到页面上,但同时也存在两个问题:

  • setup函数书写过于繁琐,在此函数中需要被渲染的数据必须在return中返回才可使用;
  • setup函数中的方法默认是非响应式的,也就是说案例中的改变名称函数虽然会实际修改属性的值,但不会将修改后的值渲染到页面上;

通过测试结果可以看出,name属性的值确实被改变了,但却并未渲染到页面上;

2.setup函数的优化:(setup语法糖)

优化1:

<template><h2>名称:{{ name }}</h2><h2 v-text="'地址:'+address"></h2><button @click="changeName">更新名称</button>
</template><!-- script setup用于主要逻辑 -->
<script lang="ts" setup>const name = '猿究院';
const address = '北大街';// 定义函数
const changeName = () => {console.log("更新name属性:", name.value);name.value += '~';
};
</script><!-- 普通script用于定义组件相关属性等 -->
<script lang="ts">
export default {name: 'School'
};
</script><style scoped></style>  

通过上述setup语法糖优化后,需要渲染到页面的数据不用再写到return中返回后才可使用了;

此时仍可以在页面上获取到相应的值,但此时的值仍是非响应式的,而且优化后需要写两个script编写,所以仍然需要进一步优化;

优化2:

可以安装一个vite插件,就可以将两个script标签进行合并了
安装插件:
安装指令:只对当前项目安装
npm i vite-plugin-vue-setup-extend -D 
配置vite.config.ts:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
//导入插件
import vueSetupExtend from 'vite-plugin-vue-setup-extend'
// https://vite.dev/config/
export default defineConfig({plugins: [vue(),//使用插件vueSetupExtend()],
}) 
代码编写:
<template><h2>名称:{{ name }}</h2><h2 v-text="'地址:'+address"></h2><button @click="changeName">更新名称</button>
</template><!--setup  语法糖-->
<script lang="ts" setup name="School">let name = "猿究院";
let address = "北大街";
const changeName = () => {console.log("更新name属性:", name);name += '~'
}
</script><style scoped></style> 
<template><School></School>
</template><script setup lang="ts" name="App">import School from "./components/School.vue";</script><style scoped></style>

上面优化案例中,我们合并了两个script标签,并且实现了数据的正常渲染;

但此时的数据仍然是非响应式的,修改数据,还是不会同步渲染到页面上,因此还需要进行优化;

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

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

相关文章

如何通过AI进行数据资产梳理

最终产出 数据资产清单 包含所有数据资产的详细目录,列出数据集名称、描述、所有者、格式、存储位置和元数据。 用途:帮助政府部门清晰了解数据资产分布和状态。 数据质量报告 数据质量评估结果,记录准确性、完整性、一致性等问题及改进建议,基于政府认可的数据质量框架(如…

【传奇开心果系列】Flet框架结合pillow实现的英文文字倒映特效自定义模板特色和实现原理深度解析

Flet框架结合pillow实现的英文文字倒映特效自定义模板特色和实现原理深度解析 一、效果展示截图 二、使用场景 三、特色说明 四、概括说明 五、依赖文件列表 六、安装依赖命令 七、 项目结构建议 八、注意事项 九、Flet 文字倒影效果实现原理分析 (一)组件结构与功能 1. 图像…

2025最新深度学习面试必问100题--理论+框架+原理+实践 (下篇)

2025最新深度学习面试必问100题–理论框架原理实践 (下篇) 在上篇中&#xff0c;我们已经深入探讨了机器学习基础、CNN、RNN及其变体&#xff0c;以及模型优化的核心技巧。 在下篇中&#xff0c;我们将把目光投向更远方&#xff0c;聚焦于当今AI领域最炙手可热的前沿。我们将深…

原子工程用AC6编译不过问题

…\Output\atk_h750.axf: Error: L6636E: Pre-processor step failed for ‘…\User\SCRIPT\qspi_code.scf.scf’修改前&#xff1a; #! armcc -E ;#! armclang -E --targetarm-arm-none-eabi -mcpucortex-m7 -xc /* 使用说明 ! armclang -E --targetarm-arm-none-eabi -mcpuco…

Python有哪些经典的常用库?(第一期)

目录 1、NumPy (数值计算基础库) 核心特点&#xff1a; 应用场景&#xff1a; 代码示例&#xff1a; 2、Pandas (数据分析处理库) 应用场景&#xff1a; 代码示例&#xff1a; 3、Scikit-learn (机器学习库) 核心特点&#xff1a; 应用场景&#xff1a; 代码示例&am…

现代 C++ 高性能程序驱动器架构

&#x1f9e0; 现代 C 高性能程序驱动器架构M/PA&#xff08;多进程&#xff09;是隔离的“孤岛”&#xff0c;M/TA&#xff08;多线程&#xff09;是共享的“战场”&#xff0c;EDSM&#xff08;事件驱动&#xff09;是高效的“反应堆”&#xff0c;MDSM&#xff08;消息驱动&…

投资储能项目能赚多少钱?小程序帮你测算

为解决电网负荷平衡、提升新能源消纳等问题&#xff0c;储能项目的投资开发越来越多。那么&#xff0c;投资储能项目到底能赚多少钱&#xff1f;适不适合投资&#xff1f;用“绿虫零碳助手”3秒钟精准测算。操作只需四步&#xff0c;简单易懂&#xff1a;1.快速登录&#xff1a…

Mac 能够连Wife,但是不能上网问题解决

请按照以下步骤从最简单、最可能的原因开始尝试&#xff1a; 第一步&#xff1a;基础快速排查 这些步骤能解决大部分临时性的小故障。 重启设备&#xff1a;关闭您的 Mac 和路由器&#xff0c;等待一分钟后再重新打开。这是解决网络问题最有效的“万能药”。检查其他设备&am…

基于SpringBoot的旅游管理系统的设计与实现(代码+数据库+LW)

摘要 本文阐述了一款基于SpringBoot框架的旅游管理系统设计与实现。该系统整合了用户信息管理、旅游资源展示、订单处理流程及安全保障机制等核心功能&#xff0c;专为提升旅游行业的服务质量和运营效率而设计。 系统采用前后端分离架构&#xff0c;前端界面设计注重跨设备兼…

Springboot乐家流浪猫管理系统16lxw(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能&#xff1a;领养人,流浪猫,领养申请开题报告内容基于Spring Boot的乐家流浪猫管理系统开题报告一、研究背景与意义随着城市化进程加速和人口增长&#xff0c;流浪猫问题已成为全球性社会挑战。据统计&#xff0c;全球每年约有1.5亿只无家可归的宠物&a…

函数定义跳转之代码跳转

相信大家在开发的过程中都有用到函数定义跳转的功能&#xff0c;在 IDE 中&#xff0c;如果在函数调用的地方停留光标&#xff0c;可能会提示对应的函数定义&#xff0c;在 GitHub 中也是如此&#xff0c;对于一些仓库来说&#xff0c;我们可以直接查看对应的函数定义了&#x…

探讨Xsens在人形机器人研发中的四个核心应用

探索Xsens动作捕捉如何改变人形机器人研发——使机器人能够从人类运动中学习、更直观地协作并弥合模拟与现实世界之间的差距。人形机器人技术是当今世界最令人兴奋且最复杂的前沿领域之一。研究人员不仅致力于开发能够像人类一样行走和行动的机器人&#xff0c;还致力于开发能够…

C语言高级编程:一文读懂数据结构的四大逻辑与两大存储

各类资料学习下载合集 ​​https://pan.quark.cn/s/8c91ccb5a474​ 作为一名程序员,我们每天都在与“数据”打交道。但你是否想过,这些数据在计算机中是如何被“整理”和“安放”的?为什么有些操作快如闪电,而有些则慢如蜗牛? 答案就藏在数据结构之中。 如果说算法是…

MySQL问题4

MySQL中varchar和char的区别 在 MySQL 中&#xff0c;VARCHAR 和 CHAR 都是用于存储字符串类型的字段&#xff0c;但它们在存储方式、性能、适用场景等方面存在明显区别&#xff1a;1. 存储方式类型说明CHAR(n)定长字符串&#xff0c;始终占用固定 n 个字符空间。不足的会自动在…

Web3 出海香港 101 |BuildSpace AMA 第一期活动高亮观点回顾

香港政府在 2022-2023 年之间已经开始布局 Web3&#xff0c;由香港政府全资拥有的数码港也进行了持续两年多的深耕。目前数码港已有接近 300 家企业入驻于此&#xff0c;包括 Animoca Brands、HashKey Group、CertiK 等行业知名独角兽公司。此外&#xff0c;如 Cobo、OneKey、D…

LTE CA和NR CA的区别和联系

LTE CA&#xff08;Carrier Aggregation&#xff09;和NR CA&#xff08;New Radio Carrier Aggregation&#xff09;都是载波聚合技术&#xff0c;它们的核心目标都是通过组合多个频段的带宽来提高数据传输速率&#xff0c;增强无线网络的吞吐量。尽管它们的功能相似&#xff…

VBA 中的 Excel 工作表函数

一、引言 在使用VBA进行Excel自动化处理时&#xff0c;我们经常需要调用Excel内置的工作表函数来完成复杂的计算或数据处理任务。然而&#xff0c;很多VBA初学者并不清楚如何正确地在VBA中调用这些函数&#xff0c;甚至重复造轮子。本文将从基础到进阶&#xff0c;系统介绍如何…

老年公寓管理系统设计与实现(代码+数据库+LW)

摘要 随着老龄化社会的不断发展&#xff0c;老年人群体的生活质量和管理需求逐渐引起社会的广泛关注。为了提高老年公寓的管理效率与服务质量&#xff0c;开发了一种基于SpringBoot框架的老年公寓管理系统。该系统充分利用了SpringBoot框架的快速开发优势&#xff0c;结合现代…

绿算技术与清智图灵签署战略合作协议

近日&#xff0c;广东省绿算技术有限公司&#xff08;以下简称“绿算技术”&#xff09;与北京清智图灵科技有限公司&#xff08;以下简称“清智图灵”&#xff09;正式签署战略合作框架协议。双方将围绕通用并行计算、高端算力解决方案等领域展开深度合作&#xff0c;共同推动…

Android,jetpack Compose模仿QQ侧边栏

SwipeMainActivity代码如下&#xff1a;package com.example.myapplicationimport android.os.Bundle import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Colu…