ref 和 reactive

文章目录

    • ref 和 reactive
      • 一、差异
      • 二、能否替代的场景分析
        • (1)基本类型数据
        • (2)对象类型数据
        • (3)数组类型数据
        • (4) 需要整体替换的场景
      • 三、替代方案与兼容写法
        • 1. 用 reactive 模拟 ref
        • 2. 用 ref 模拟 reactive
      • 四、最佳实践建议
      • 五、性能对比
      • 六 结论:

ref 和 reactive

一、差异

在这里插入图片描述

特性refreactive
适用类型任意类型(包括基本类型)仅对象/数组
访问对象需要通过 .value直接访问属性
整体替换✅支持(直接赋值)❌不支持(需要特殊处理)
解构保持相应性❌需要配合 toRef❌需要配合 toRef
性能开销较低(仅包装一层)较高(深度代理)

二、能否替代的场景分析

(1)基本类型数据
// ✅ 必须用 ref
const count = ref(0); // 正确
const count = reactive(0); // ❌ 错误(reactive 只能处理对象)
(2)对象类型数据
// ✅ 可以用 reactive 替代 ref
const objRef = ref({ a: 1 });
const objReactive = reactive({ a: 1 });// 访问方式差异
console.log(objRef.value.a); // ref 需要 .value
console.log(objReactive.a);  // reactive 直接访问
(3)数组类型数据
// ✅ 可以用 reactive 替代 ref
const arrRef = ref([1, 2, 3]);
const arrReactive = reactive([1, 2, 3]);// 修改操作差异
arrRef.value.push(4);   // ref 需要 .value
arrReactive.push(4);    // reactive 直接操作
(4) 需要整体替换的场景
// ✅ 必须用 ref
const state = ref({ a: 1 });
state.value = { a: 2 }; // ✅ 正确// ❌ reactive 无法直接替换
const state = reactive({ a: 1 });
state = { a: 2 }; // ❌ 错误(失去响应性) 

三、替代方案与兼容写法

1. 用 reactive 模拟 ref
// 通过 reactive 包装单属性对象
const count = reactive({ value: 0 });
console.log(count.value); // 访问方式与 ref 一致
2. 用 ref 模拟 reactive
// 通过 ref 包装对象
const obj = ref({ a: 1 });
console.log(obj.value.a); // 访问时需要 .value

四、最佳实践建议

  1. 基本类型 → 必须用 ref
  2. 对象/数组 → 优先用 reactive(除非需要整体替换)
  3. 复杂数据结构 → 混合使用:
const state = reactive({count: ref(0),       // 嵌套 refuser: reactive({     // 嵌套 reactivename: 'Alice'})
});
  1. 模板中使用 → 优先用 reactive(避免频繁 .value)

五、性能对比

操作refreactive
创建响应式对象⭐快⭐⭐慢
属性访问⭐⭐⭐快⭐⭐快
数组修改⭐⭐中⭐⭐⭐快
整体替换⭐⭐⭐快❌不支持

六 结论:

不能简单用 reactive 完全替代 ref,但可以根据数据类型和使用场景选择:

  • 基本类型 → 必须用 ref
  • 对象/数组 → 优先用 reactive
  • 需要整体替换 → 必须用 ref
  • 模板中直接访问 → 优先用 reactive(减少 .value 噪音)

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

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

相关文章

BatchNorm 与 LayerNorm:原理、实现与应用对比

BatchNorm 与 LayerNorm:原理、实现与应用对比 Batch Normalization (批归一化) 和 Layer Normalization (层归一化) 是深度学习中两种核心的归一化技术,它们解决了神经网络训练中的内部协变量偏移问题,大幅提升了模型训练的稳定性和收敛速度…

OcsNG基于debian一键部署脚本

🤔 为什么有了GLPI还要部署OCS-NG? 核心问题:数据收集的风险 GLPI直接收集的问题: Agent直接向GLPI报告数据时,任何收集异常都会直接影响资产数据库网络问题、Agent故障可能导致重复资产、错误数据、资产丢失无法对收集…

001_Claude开发者指南介绍

Claude开发者指南介绍 目录 Claude简介Claude 4 模型开始使用核心功能支持资源 Claude简介 Claude 是由 Anthropic 构建的高性能、可信赖和智能的 AI 平台。Claude 具备出色的语言、推理、分析和编程能力,可以帮助您解决各种复杂任务。 想要与 Claude 聊天吗&a…

004_Claude功能特性与API使用

Claude功能特性与API使用 目录 API 基础使用核心功能特性高级功能开发工具平台支持 API 基础使用 快速开始 通过 Anthropic Console 获取 API 访问权限: 在 console.anthropic.com/account/keys 生成 API 密钥使用 Workbench 在浏览器中测试 API 认证方式 H…

ReAct论文解读(1)—什么是ReAct?

什么是ReAct? 在大语言模型(LLM)领域中,ReAct 指的是一种结合了推理(Reasoning) 和行动(Acting) 的提示方法,全称是 “ReAct: Synergizing Reasoning and Acting in Lan…

【云服务器安全相关】服务器防火墙常见系统日志信息说明

目录✅ 一、防火墙日志是做什么的?🛠️ 二、常见防火墙日志信息及说明🧪 三、典型日志示例解析1. 被阻断的访问(DROP)2. 被允许的访问(ACCEPT)3. 被拒绝的端口访问4. 可疑端口扫描行为&#x1f…

011_视觉能力与图像处理

视觉能力与图像处理 目录 视觉能力概述支持的图像格式图像上传方式使用限制最佳实践应用场景API使用示例视觉能力概述 多模态交互 Claude 3 系列模型具备强大的视觉理解能力,可以分析和理解图像内容,实现真正的多模态AI交互。这种能力使Claude能够: 图像内容分析:理解图…

ansible自动化部署考试系统前后端分离项目

1. ✅ansible编写剧本步骤1️⃣创建roles目录结构2️⃣在group_vars/all/main.yml中定义变量列表3️⃣在tasks目录下编写tasks任务4️⃣在files目录下准备部署文件5️⃣在templates目录下创建j2模板文件6️⃣在handlers目录下编写handlers7️⃣在roles目录下编写主playbook8️⃣…

【AI论文】GLM-4.1V-Thinking:迈向具备可扩展强化学习的通用多模态推理

摘要:我们推出GLM-4.1V-Thinking,这是一款旨在推动通用多模态推理发展的视觉语言模型(VLM)。在本报告中,我们分享了在以推理为核心的训练框架开发过程中的关键发现。我们首先通过大规模预训练开发了一个具备显著潜力的…

Linux进程通信——匿名管道

目录 1、进程间通信基础概念 2、管道的工作原理 2.1 什么是管道文件 3、匿名管道的创建与使用 3.1、pipe 系统调用 3.2 父进程调用 fork() 创建子进程 3.3. 父子进程的文件描述符共享 3.4. 关闭不必要的文件描述符 3.5 父子进程通过管道进行通信 父子进程通信的具体例…

sql:sql在office中的应用有哪些?

在Office软件套件中,主要是Access和Excel会用到SQL(结构化查询语言),以下是它们在这两款软件中的具体应用: 在Access中的应用 创建和管理数据库对象: 创建表:使用CREATE TABLE语句可以创建新的数…

零基础完全理解视觉语言模型(VLM):从理论到代码实践

本文是《从LLM到VLM:视觉语言模型的核心技术与Python实现》的姊妹篇,主要面向零基础的读者,希望用更通俗易懂的语言带领大家入门VLM。本教程的完整代码可以在GitHub上找到,如果你有任何问题或建议,欢迎交流讨论。 写在…

数据结构 Map和Set

文章目录📕1. 二叉搜索树✏️1.1 查找操作✏️1.2 插入操作✏️1.3 删除操作📕2. Map的使用✏️2.1 Map的常用方法✏️2.2 TreeMap和HashMap的区别✏️2.3 HashMap的底层实现📕3. Set的使用✏️3.1 Set的常用方法✏️3.2 TreeSet和HashSet的区…

树莓派5-系统 Debian 12 开启VNC远程访问踩坑记录

简单记录一下踩坑,安装vnc远程访问服务并设置开机自启1.查看系统版本,我这里的系统版本是 12cat /etc/os-release2.安装VNC服务sudo apt install realvnc-vnc-server realvnc-vnc-viewer -y3.创建服务单元文件:sudo nano /etc/systemd/system…

TASK2 夏令营:用AI做带货视频评论分析

TASK2 夏令营:用AI做带货视频评论分析**电商评论洞察赛题:从Baseline到LLM进阶优化学习笔记**一、 赛题核心解读1.1. 任务链条与目标1.2. 关键挑战与评分机制二、 Baseline方案回顾与瓶颈分析2.1. Baseline技术栈2.2. 核心瓶颈三、 进阶优化策略&#xf…

Docker:安装命令笔记

目录 零、安装:略 一、镜像 1.0、获取镜像: 1.1、查看镜像: 1.2、删除镜像: 二、容器 2.0、创建并启动容器 2.1、tomcat和jdk9的“创建并启动容器”的命令 2.2、容器操作 2.3、容器日志操作 零、安装:略 略 …

Python七彩花朵

系列文章 序号直达链接Tkinter1Python李峋同款可写字版跳动的爱心2Python跳动的双爱心3Python蓝色跳动的爱心4Python动漫烟花5Python粒子烟花Turtle1Python满屏飘字2Python蓝色流星雨3Python金色流星雨4Python漂浮爱心5Python爱心光波①6Python爱心光波②7Python满天繁星8Pytho…

【保姆级图文详解】MCP架构(客户端-服务端)、三种方式使用MCP服务、Spring AI MCP客户端和服务端开发、MCP部署方案、MCP安全性

文章目录前言一、MCP(model context protocol)1.1、概念描述1.2、MCP作用与意义1.3、MCP架构二、使用MCP(model context protocol)2.1、云平台使用MCP2.2、软件客户端使用MCP2.3、Spring AI程序中使用MCP三、Spring AI MCP(model context protocol)开发过程3.1、MCP服务端开发3…

Linux的 iproute2 配置:以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)、网桥(Bridge)笔记250713

Linux的 iproute2 配置:以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)、网桥(Bridge)笔记250713 在 Linux 中使用 iproute2 工具集配置网络是现代且推荐的方法,它取代了旧的 ifconfig、route、brctl、vconfig 等命令。iproute2 提供了统一的接口 ip …

当信任上链解码区块链溯源系统开发逻辑与产业变革

当信任上链:解码区块链溯源系统的开发逻辑与产业变革在上海某高端超市的进口水果区,消费者王女士拿起一盒车厘子,用手机扫描包装上的二维码,屏幕立刻弹出一串动态信息:智利瓦尔帕莱索港口的装船时间、海关清关的具体日…