Vue3(ref与reactive)
一,ref创建_基本类型的响应式数据
在 Vue 3 中,ref
是创建响应式数据的核心 API 之一
** ref
的基本概念**
ref
用于创建一个可变的响应式数据引用,适用于任何类型的值(基本类型、对象、数组等)。- 通过
ref
包装的值会被转换为一个响应式对象,其值存储在.value
属性中。
你想让谁是响应式数据就把谁用ref包装起来。
不过在使用ref之前我们需要先引入ref
//引入ref
import { ref } from 'vue'
在Vue模版中ref会自动展开.value
就像这样
//数据
let name = ref('张三');
let age = ref(18);
let address = '北京';
let tel = '123456789';
在JS中必须要通过.value属性访问和修改ref的值。
//方法
function changeName(){name.value = '李四';
}
function changeAge(){age.value = 20;
}
function showTel(){console.log(tel);
}
我们可以通过volar插件自动添加.value
在vscode中的拓展中可以找到勾选上即可
目前来说模版就是上面的数据部分,JS就是方法部分,其他的后面再说。
二,reactive对象类型的数据
reactive跟ref差不多就是定义的类型不同,不过reactive只能定义对象类型的数据,但是ref可以定义任何类型的值。
示例:
<template><div class="person"><h2>一辆{{ car.brand }},颜色是{{ car.color }},价格为{{ car.price}}</h2><button @click="changePrice">加价</button><br><h2>游戏列表</h2><!-- v-bind:key代表将后面双引号里的内容当成JS表达式来解析可以将v-bind省略只写一个:key --><ul><li v-for="g in games" v-bind:key="g.id"></li></ul><button @click="changeFirstGameName">修改第一个游戏的名字</button></div>
</template>
<script lang="ts" setup name="Person">
import {reactive} from 'vue'//reactive可以定义数组
let car = reactive({brand : '梅赛德斯', color: 'red', price: 200000})
let games = reactive([{id: 1, name: '金铲铲之战'}, {id: 2, name: '原神'}, {id: 3, name: '王者荣耀'}])
function changePrice() {car.price += 10000console.log(car.price)
}
function changeFirstGameName() {games[0].name = '无畏契约'
}
</script>
但是用ref定义对象类型的数据,底层还是靠reactive来实现
三,reactive和ref的区别
区别:
1.ref创建的变量必须使用.value
2.reactive重新分配一个新对象,会失去响应式(可以使用Object.assign去整体替换)
function changeCar(){
Object.assign(car,{brand:'bwm',price:999999})
}
就像这样如果想要同时更改品牌和价格就需要这样写。
如果你使用reactive页面不会更新。
- 使用原则
1,若需要一个基本类型的响应式数据,必须使用ref
2,若需要一个响应式对象,层级不深,ref,reactive都可以
3,若需要一个响应式对象,且层级较深,推荐使用reactive。
相关文章:

Vue3(ref与reactive)
一,ref创建_基本类型的响应式数据 在 Vue 3 中,ref是创建响应式数据的核心 API 之一 ** ref的基本概念** ref用于创建一个可变的响应式数据引用,适用于任何类型的值(基本类型、对象、数组等)。通过ref包装的值会被转…...

Starrocks中RoaringBitmap杂谈
背景 最近在阅读Starrocks源码的时候,遇到ColumnRefSet的RoaringBitmap使用,所以借此来讨论一下RoaringBitmap这个数据结构,这种思想是很值得借鉴的。 对于的实现可以参考一下 <dependency><groupId>org.roaringbitmap</groupId><…...
通过ca证书的方式设置允许远程访问Docker服务
设置允许远程访问Docker服务 使用场景 环境 系统:anolis7.9 修改Docker服务配置,配置安全证书 生成ca证书到/etc/docker目录中,后续会要用到 #该步骤需要设置密码,后面步骤会要用到,此处设置密码为123456 openss…...

涂胶协作机器人解决方案 | Kinova Link 6 Cobot在涂胶工业的方案应用与价值
涂胶工业现状背景: 涂胶工艺在汽车制造、电子组装、航空航天等工业领域极为关键,关乎产品密封、防水、绝缘性能及外观质量。 然而,传统涂胶作业问题频发。人工操作重复性强易疲劳,涂胶质量波动大;大型涂胶器使用增加工…...
理解继承与组合的本质:Qt 项目中的设计选择指南
文章目录 理解继承与组合的本质:Qt 项目中的设计选择指南一、继承与组合的本质区别1. 继承(Inheritance)2. 组合(Composition) 二、继承的适用场景三、组合的适用场景四、错误使用继承的后果五、判断继承或组合的三问法…...

新手小白使用VMware创建虚拟机安装Linux
新手小白想要练习linux,找不到合适的地方,可以先创建一个虚拟机,在自己创建的虚拟机里面进行练习,接下来我给大家接受一下创建虚拟机的步骤。 VMware选择创建新的虚拟机 选择自定义 硬件兼容性选择第一个,不同的版本&a…...
使用 PHP 和 Guzzle 对接印度股票数据源API
对接 StockTV API 可能涉及获取实时或历史的金融市场数据,如股票价格、交易量、市场新闻等。为了帮助你更好地理解如何使用 PHP 对接 StockTV API,下面我将提供一个通用指南和示例代码。 前提条件 注册并获取API密钥:首先你需要在 StockTV …...

EscapeX:去中心化游戏,开启极限娱乐新体验
VEX 平台推出全新去中心化游戏 EscapeX(数字逃脫),创新性地将大逃杀玩法与区块链技术相融合。用户不仅能畅享紧张刺激的解谜过程,更能在去中心化、公正透明的环境中参与游戏。EscapeX 的上线,为 VEX 生态注入全新活力&…...

使用PyQt5的图形用户界面(GUI)开发教程
文章目录 写在前面一、PyQt5的安装1.1 使用Conda管理环境1.1.1 新建环境1.1.2 conda list和pip list的区别1.1.3 conda install和pip install的区别 1.2 安装PyQt5和Qt Designer1.3 VsCode中配置Qt Designer 二、PyQt5的UI设计2.1 .ui文件设计2.2 .qrc文件建立2.3 qss设计 三、…...
STM32实战:智能环境监测站设计方案
下面是一个基于STM32的智能环境监测站设计方案,使用Keil MDK-ARM开发环境。这个系统集成了多种传感器,并通过OLED显示数据,同时具备数据存储和报警功能。 [STM32F4系列MCU] ├── I2C总线 │ ├── SHT30温湿度传感器 │ ├──…...
猎板硬金镀层厚度:新能源汽车高压系统的可靠性基石
在新能源汽车的电池管理系统(BMS)和电机控制器中,硬金镀层厚度直接关系到高压环境下的电气稳定性与使用寿命。猎板针对车载场景开发的耐电迁移方案(金层 2.5μm,镍层 8μm),经 150℃/85% RH 高压…...
KEYSIGHT是德科技 E5063A 18G ENA系列网络分析仪
KEYSIGHT是德科技 E5063A 18G ENA系列网络分析仪 E5063A ENA 矢量网络分析仪 18GHz 2端口 降低无源射频元器件的测试成本 Keysight E5063A ENA 是一款经济适用的台式矢量网络分析仪,可用于测试简单的无源元器件,例如频率最高达到 18 GHz 的天线、滤…...
VR 虚拟仿真工器具:开启医学新视界的智慧钥匙
VR 虚拟仿真工器具在医疗领域的应用,为医疗行业的发展带来了新的机遇。在手术模拟训练中,它让医生提前熟悉手术流程和操作技巧。对于一些复杂的手术,如心脏搭桥手术、神经外科手术等,手术难度大、风险高,对医生的操作技…...
webshell管理工具、C2远控服务器流量分析
文章目录 一、Webshell管理工具流量分析1. 蚁剑(AntSword)2. 冰蝎(Behinder)3. 哥斯拉(Godzilla)二、常见C2远控服务器流量分析1. Metasploit2. CobaltStrike 三、防御对抗策略总结 一、Webshell管理工具流…...

JavaWeb:前端工程化-TS(TypeScript)
概述 快速入门 常用类型 基础类型 联合类型 函数类型 对象类型 接口Interface Interface和type区别 典型推论...

unity+ spine切换武器不换皮肤解决方案
1.在spine编辑中获取到角色武器插槽名称 这里的武器插槽名称为“zj_22”。角色的spine正常导出到unity中。 2.将需要替换的武器图片单独放在一个spine项目里面,并为每个武器单独建立一个插槽。 而且全部放在根骨骼Root下。 3.将武器的spine动画导出,会…...

[java八股文][MySQL面试篇]SQL基础
NOSQL和SQL的区别? SQL数据库,指关系型数据库 - 主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)。 关系型数据库存储结构化数据。这些数据逻辑上以行列二维表的形式存在,每一列代表…...
Ubuntu中SSH服务器安装使用
SSH服务安装 1. 安装 OpenSSH 安装 SSH 服务端(允许远程登录) sudo apt update sudo apt install openssh-server安装 SSH 客户端(用于连接其他服务器) sudo apt install openssh-client2. 检查 SSH 服务状态 sudo systemctl…...

【AI论文】SWE-rebench:一个用于软件工程代理的任务收集和净化评估的自动化管道
摘要:基于LLM的代理在越来越多的软件工程(SWE)任务中显示出有前景的能力。 然而,推进这一领域面临着两个关键挑战。 首先,高质量的训练数据稀缺,尤其是反映现实世界软件工程场景的数据,在这些场…...

Flask文件处理全攻略:安全上传下载与异常处理实战
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...

【算法深练】分组循环:“分”出条理,化繁为简
目录 引言 分组循环 2760. 最长奇偶子数组 1446. 连续字符 1869. 哪种连续子字符串更长 2414. 最长的字母序连续子字符串的长度 3456. 找出长度为 K 的特殊子字符串 1957. 删除字符使字符串变好 674. 最长连续递增序列 978. 最长湍流子数组 2110. 股票平滑下跌阶段的…...

焊缝缺陷焊接缺陷识别分割数据集labelme格式5543张4类别
数据集中有超过一半为增强图片,请认真观察图片预览 数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):5543 标注数量(json文件个数):5543 标注类别数:4…...

关于scrapy在pycharm中run可以运行,但是debug不行的问题
关于scrapy在pycharm中run模式可以运行,但是debug模式不行的问题 文章目录 关于scrapy在pycharm中run模式可以运行,但是debug模式不行的问题查了下原因 点击run就可以运行,但是debug就是运行不了 一点击debug就报这个错,也不知道啥…...

Java高级 | 【实验四】Springboot 获取前端数据与返回Json数据
隶属文章: Java高级 | (二十二)Java常用类库-CSDN博客 系列文章: Java高级 | 【实验一】Spring Boot安装及测试 最新-CSDN博客 Java高级 | 【实验二】Springboot 控制器类相关注解知识-CSDN博客 Java高级 | 【实验三】Springboot …...
云数据库选型指南:关系型 vs NoSQL vs NewSQL的企业决策
在云时代,数据库选型直接关系到企业应用性能和成本效益。本文深入分析三大数据库类型,助您做出明智决策。 目录概览 关系型数据库:经典之选NoSQL数据库:灵活应对非结构化数据NewSQL数据库:融合的优势三大数据库对比分…...

Prj08--8088单板机C语言8255读取按键码
1.验证结果 2.代码片 key_codeinp(PORT_8255_C)&0x0f;tiny_sprintf(buffer,"Key_code 0X%x \r\n",key_code);uart_str_send(buffer); 3.完整代码 #include "tiny_stdarg.h" // 使用自定义可变参数实现#define ADR_273 0x0200 #define ADR_244 0x…...

蜜獾算法(HBA,Honey Badger Algorithm)
2021年由Hashim等人提出(论文:Honey Badger Algorithm: A New Metaheuristic Algorithm for Solving Optimization Problems)。模拟蜜獾在自然界中的智能捕食行为,属于群体智能优化算法(与粒子群PSO、遗传算法GA同属一…...

Modbus转Ethernet IP网关助力罗克韦尔PLC数据交互
在工业自动化领域,Modbus协议是一种广泛应用的串行通信协议,它定义了主站和从站之间的通信规则和数据格式。罗克韦尔PLC是一种可编程的逻辑控制器,通过Modbus协议实现与其他设备之间的数据交互。然而,随着以太网技术的普及和发展&…...

飞算JavaAI 炫技赛重磅回归!用智能编码攻克老项目重构难题
深夜还在排查十年前Hibernate框架埋下的N1查询隐患?跨语言迁移时发现SpringMVC控制器里的业务逻辑像一团乱麻?当企业数字化进入深水区,百万行代码的老系统就像一座随时可能崩塌的"技术债冰山"。近日,飞算科技发布JavaAI…...
青少年编程与数学 02-020 C#程序设计基础 15课题、异常处理
青少年编程与数学 02-020 C#程序设计基础 15课题、异常处理 一、异常1. 异常的分类2. 异常的作用小结 二、异常处理1. 异常处理的定义2. 异常处理的主要组成部分3. 异常处理的作用小结 三、C#异常处理1. 异常的基本概念2. 异常处理的关键字3. 异常处理的流程4. 自定义异常5. 异…...