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

【vue3.0中ref与reactive的区别及使用】

什么是ref与reactive

ref与reactive都是Vue3.0中新增的API,用于响应式数据的处理。

1. ref

ref是一个函数,可以用于将一个普通的数据类型转换成响应式数据。ref返回一个包含value属性的对象,通过修改value属性的值,可以触发组件更新。

使用方式如下:

import { ref } from 'vue'const count = ref(0)// 获取值
console.log(count.value)// 修改值
count.value++// 在模板中使用
<template><div>{{ count }}</div>
</template>

2. reactive

reactive是一个函数,用于将一个普通的对象转换成响应式数据。reactive返回一个响应式的Proxy对象,通过修改该对象的属性值,可以触发组件更新。

使用方式如下:

import { reactive } from 'vue'const state = reactive({count: 0,name: 'Tom'
})// 获取值
console.log(state.count)// 修改值
state.count++// 在模板中使用
<template><div>{{ state.count }}</div>
</template>

区别:

  1. ref只能用于将基本类型数据转换成响应式数据,而reactive可以将任意对象转换成响应式数据。

  2. ref返回一个包含value属性的对象,而reactive返回一个响应式的Proxy对象。

  3. 在使用上,ref更方便一些,使用起来更简单直观。而reactive比较灵活,可以将任意对象转换成响应式数据,并且可以进行深层次的响应式处理。

reactive() API 有一些局限性:

有限的值类型:

它只能用于对象类型 (对象、数组和如 Map、Set 这样的集合类型)。它不能持有如 string、number 或 boolean 这样的原始类型。

不能替换整个对象:

由于 Vue 的响应式跟踪是通过属性访问实现的,因此我们必须始终保持对响应式对象的相同引用。这意味着我们不能轻易地“替换”响应式对象,因为这样的话与第一个引用的响应性连接将丢失:

let state = reactive({ count: 0 })// 上面的 ({ count: 0 }) 引用将不再被追踪
// (响应性连接已丢失!)
state = reactive({ count: 1 })

对解构操作不友好:

当我们将响应式对象的原始类型属性解构为本地变量时,或者将该属性传递给函数时,我们将丢失响应性连接:

const state = reactive({ count: 0 })// 当解构时,count 已经与 state.count 断开连接
let { count } = state
// 不会影响原始的 state
count++// 该函数接收到的是一个普通的数字
// 并且无法追踪 state.count 的变化
// 我们必须传入整个对象以保持响应性
callSomeFunction(state.count)

需要注意的是,使用ref和reactive时,不能直接修改属性值的方式来更新数据,而是应该通过修改value或Proxy对象的属性来触发组件更新。例如:

// ref使用示例
const count = ref(0)
count++ // 这样是错误的,应该使用count.value++// reactive使用示例
const state = reactive({count: 0
})
state.count++ // 这样是正确的,会触发组件更新

相关文章:

【vue3.0中ref与reactive的区别及使用】

什么是ref与reactive ref与reactive都是Vue3.0中新增的API&#xff0c;用于响应式数据的处理。 1. ref ref是一个函数&#xff0c;可以用于将一个普通的数据类型转换成响应式数据。ref返回一个包含value属性的对象&#xff0c;通过修改value属性的值&#xff0c;可以触发组件…...

计算机竞赛 基于情感分析的网络舆情热点分析系统

文章目录 0 前言1 课题背景2 数据处理3 文本情感分析3.1 情感分析-词库搭建3.2 文本情感分析实现3.3 建立情感倾向性分析模型 4 数据可视化工具4.1 django框架介绍4.2 ECharts 5 Django使用echarts进行可视化展示5.1 修改setting.py连接mysql数据库5.2 导入数据5.3 使用echarts…...

C++ 动态分配内存|动态数组

int** arr new int* [n]; for (int i 0; i < n; i) {arr[i] new int[2]; } 以上代码是用C动态分配了一个二维数组arr&#xff0c;其中arr是一个指向int指针的指针&#xff0c;n是一个整数。代码的目的是创建一个包含n个大小为2的整数数组的二维数组。 首先&#xff0c;…...

React Diff算法原理

文章目录 前言Diff算法原理 前言 &#x1f449;点此&#xff08;想要了解Diff算法&#xff09; Diff算法原理 React Diff算法是React用于更新虚拟DOM树的一种算法。它通过比较新旧虚拟DOM树的差异&#xff0c;然后只对有差异的部分进行更新&#xff0c;从而提高性能。 Reac…...

查局域网所有占用IP

查局域网所有占用IP 按&#xff1a;winr 出现下面界面&#xff0c;在文本框中输入 cmd 按确定即可出现cmd命令界面 在cmd命令窗口输入你想要ping的网段&#xff0c;下面192.168.20.%i即为你想要ping的网段&#xff0c;%i代表0-255 for /L %i IN (1,1,254) DO ping -w 1 -n 1…...

【MySQL】引擎类型

与其他DBMS一样&#xff0c;MySQL有一个 具体管理和处理数据的内部引擎 。在使用create table语句时&#xff0c;该引擎具体创建表&#xff0c;而在使用select或进行其他数据库处理时&#xff0c;该引擎在内部处理你的请求。多数时候&#xff0c;引擎都隐藏在DBMS内&#xff0…...

springMVC之HttpMessageConverter

文章目录 前言一、RequestBody二、RequestEntity三、ResponseBody四、SpringMVC处理json五、SpringMVC处理ajax六、RestController注解七、ResponseEntity总结 前言 HttpMessageConverter&#xff0c;报文信息转换器&#xff0c;将请求报文转换为Java对象&#xff0c;或将Java…...

计算机网络aaaaaaa

差错检测 在一段时间内&#xff0c;传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate) 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111…...

pdf.js构建时,报Cannot read property ‘createChildCompiler‘ of undefined #177的解决方法

在本地和CI工具进行构建时&#xff0c;报如下错误。 Cannot read property createChildCompiler of undefined #177解决方法&#xff1a; 找到vue.config.js&#xff0c;在 module.exports {parallel: false, //新增的一行chainWebpack(config) {....config.module.rule(&…...

Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【六】

&#x1f600;前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【六】&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章…...

idea配置注释模板

一、类的模板 设置里面依次找到图中标注的地方 填入 /** ${describe} author 填入你的名字 date ${YEAR}-${MONTH}-${DAY} ${TIME} version 1.0.0 */配置完成后&#xff0c;新创建的类就会自动生成类开头的注释 二、方法的注释模板 如图创建模板 步骤6中填入 *** $descrip…...

Unity编辑器扩展:提高效率与创造力的关键

Unity编辑器扩展&#xff1a;提高效率与创造力的关键 前言 一、理解Unity编辑器二、扩展Unity编辑器的意义三、扩展Unity编辑器的必要性四、Unity编辑器的扩展方式五、扩展Unity编辑器的步骤六、Unity编辑器扩展的应用案例七、总结 前言 Unity是一款广泛使用的游戏开发引擎&am…...

Java之对象引用实践

功能概述 从JDK1.2版本开始&#xff0c;程序可以通过4种类型的对象的引用来管控对象的生命周期。这4种引用分别为&#xff0c;强引用、软引用、弱引用和虚引用。本文中针对各种引用做了相关测试&#xff0c;并做对应分析。 功能实践 场景1&#xff1a;弱引用、虚引用、软引用…...

IntelliJ IDEA快捷键大全 + 动图演示!

来自&#xff1a;https://mp.weixin.qq.com/s/434xV02QkDiAFC1yFCAtZw 一、构建/编译 二、文本编辑 三、光标操作 四、文本选择 五、代码折叠 六、多个插入符号和范围选择 七、辅助编码 八、上下文导航 九、查找操作 十、符号导航 十一、代码分析 十二、运行和调试 …...

React 生命周期

React的生命周期 一、什么是React的生命周期二、传统生命周期2.1、挂载&#xff08;Mounting&#xff09;2.2、更新&#xff08;Updating&#xff09;2.3、卸载&#xff08;Unmounting&#xff09;2.4、API2.4.1、render2.4.1.1、Updating 阶段&#xff0c;render调用完还有可能…...

5G智能网关如何解决城市停车痛点难点

2023年上半年&#xff0c;我国汽车新注册登记1175万辆&#xff0c;同比增长5.8%&#xff0c;88个城市汽车保有量超过100万辆&#xff0c;北京、成都等24个城市超过300万辆。随着车辆保有量持续增加&#xff0c;停车难问题长期困扰城市居民&#xff0c;也导致城市路段违停普遍、…...

docker 学习-- 04 实践搭建 1(宝塔)

docker 学习-- 04 实践 1&#xff08;宝塔&#xff09; docker 学习-- 01 基础知识 docker 学习-- 02 常用命令 docker 学习-- 03 环境安装 docker 学习-- 04 实践 1&#xff08;宝塔&#xff09; docker 学习-- 04 实践 2 &#xff08;lnpmr环境&#xff09; 通过上面的学…...

MySQL的mysql-bin.00xx binlog日志文件的清理

目录 引言手工清理配置自动清理 引言 公司一个项目生产环境mysql数据盘占用空间增长得特别快&#xff0c;经过排查发现是开启了mysql的binlog日志。如果把binlog日志关闭&#xff0c;如果操作万一出现问题&#xff0c;就没有办法恢复数据&#xff0c;很不安全&#xff0c;只能…...

Java实现SM2前后端加解密

Sm2加解密原理&#xff0c;非对称加密&#xff0c;公钥加密&#xff0c;私钥解密。公私钥对成对生成&#xff0c;加密端解密端各自保存。用公钥加密必须要用对应的私钥才能解密&#xff0c;保证安全性。 这里我们实现的功能是前端加密&#xff0c;后端解密&#xff0c;这样前端…...

自动化PLC工程师能否转到c#上位机开发?

成功从自动化PLC工程师转向C#上位机开发的经历可能因人而异&#xff0c;以下是一些分享的思路和建议&#xff1a;扩展编程技能&#xff1a;学习C#语言和相关的开发工具和框架&#xff0c;掌握语言的基础知识和常用的编程技巧。可以通过在线教程、培训课程、书籍等途径进行学习&…...

UnityXR实战:用Pico实现物体抓取与场景重置(含材质交互技巧)

UnityXR实战&#xff1a;用Pico实现物体抓取与场景重置&#xff08;含材质交互技巧&#xff09; 在虚拟现实开发领域&#xff0c;交互体验的质量往往决定了产品的成败。Pico作为国内领先的VR设备&#xff0c;结合UnityXR框架&#xff0c;为开发者提供了强大的工具链来实现沉浸式…...

[双重嵌入架构]:实现高精度人脸生成的AI解决方案

[双重嵌入架构]&#xff1a;实现高精度人脸生成的AI解决方案 【免费下载链接】IP-Adapter-FaceID 项目地址: https://ai.gitcode.com/hf_mirrors/h94/IP-Adapter-FaceID 1. 技术原理&#xff1a;双重嵌入架构的创新突破 1.1 并行特征处理机制 IP-Adapter-FaceID Plus…...

无线音频桥接实战指南:让传统音响实现跨设备兼容的完整方案

无线音频桥接实战指南&#xff1a;让传统音响实现跨设备兼容的完整方案 【免费下载链接】AirConnect Use AirPlay to stream to UPnP/Sonos & Chromecast devices 项目地址: https://gitcode.com/gh_mirrors/ai/AirConnect &#x1f3b6; 从"音响孤岛"到&…...

Qwen3-0.6B-FP8实战案例:为嵌入式系统开发提供代码生成与调试建议

Qwen3-0.6B-FP8实战案例&#xff1a;为嵌入式系统开发提供代码生成与调试建议 最近在折腾一个STM32的小项目&#xff0c;想用PWM调个呼吸灯&#xff0c;结果对着手册和寄存器配置了半天&#xff0c;不是时钟没配对就是占空比算错&#xff0c;一编译还报了一堆警告。相信不少搞…...

硬件调试新纪元:85%效率提升的AMD Ryzen系统优化方案

硬件调试新纪元&#xff1a;85%效率提升的AMD Ryzen系统优化方案 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://git…...

别再乱改NV了!深入理解高通Modem配置:从UI Task到PDN管理,这些底层逻辑你得懂

高通Modem配置深度解析&#xff1a;从UI Task到PDN管理的底层逻辑 1. 理解Modem配置的本质 在移动通信领域&#xff0c;高通平台的Modem配置一直是个既关键又复杂的课题。许多开发者习惯性地复制粘贴NV配置参数&#xff0c;却对背后的运行机制一知半解。这种"知其然而不知…...

Qwen3.5-4B-Claude-Opus零基础上手:Web交互页面功能详解与最佳实践

Qwen3.5-4B-Claude-Opus零基础上手&#xff1a;Web交互页面功能详解与最佳实践 1. 模型与平台介绍 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF 是一个基于 Qwen3.5-4B 的推理蒸馏模型&#xff0c;特别强化了结构化分析、分步骤回答、代码与逻辑类问题的处理能力。…...

G-Helper实战:华硕笔记本硬件控制与性能调优解决方案

G-Helper实战&#xff1a;华硕笔记本硬件控制与性能调优解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址…...

HRNet代码逐行解析:从BasicBlock到HighResolutionNet,手把手教你读懂多分辨率融合

HRNet代码深度解析&#xff1a;从基础模块到多分辨率融合实战 在计算机视觉领域&#xff0c;HRNet&#xff08;High-Resolution Network&#xff09;因其独特的并行多分辨率架构而备受关注。与传统的串行降采样网络不同&#xff0c;HRNet在整个前向传播过程中始终保持高分辨率表…...

基于python框架的大学生创新创业项目管理系统vue

目录功能模块分析项目管理模块评审管理模块资源协同模块技术实现要点数据安全方案扩展性设计项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作功能模块分析 用户管理模块 角色划分&#xff1a;学生、导师、管理员&#xff08;支…...