如何理解ref toRef和toRefs

是什么

ref

  • 生成值类型的响应式数据
  • 可用于模板和reactive
  • 通过.value修改值
    ref也可以像vue2中的ref那样使用

toRef

  • 针对一个响应式对象(reactive)的prop
  • 创建一个ref
  • 两者保持引用关系

toRefs

  • 将响应式对象(reactive封装)转换为普通对象
  • 对象的每个prop都是对应的ref
  • 两者保持引用关系

合成函数(可以理解为hooks)返回响应式对象

最佳使用方式

  • 用reactive做对象的响应式,用ref做值类型的响应式
  • setup中返回toRefs(state),或者roRef(state, ‘xxx’)
  • ref变量命名都用xxxRef
  • 合成函数返回响应式对象时,使用toRefs

进阶,深入理解

为什么需要ref ?
  • 返回值类型,会丢失响应式
  • 如在setup、computed、合成函数,都有可能返回值类型
  • Vue如果不定义ref,用户将自造ref,反而混乱
为什么需要.value?
  • ref时一个对象(不丢失响应式),value存储值
  • 通过.value属性的get和set实现响应式
  • 用于模板、reactive时,不需要.value,其他情况都需要

比如:

// 不使用.valuefunction computed1(getter) {let ref = 0;setTimeout(() => {ref = getter}, 1500);return ref;}// 使用.valuefunction computed2(getter) {let ref = {value: null};setTimeout(() => {ref.value = getter}, 1500);return ref;}let a = computed1(() => 100); // 0 -> 0let b = computed2(() => 100); // 0 -> 100
为什么需要toRef toRefs?
  • 初衷:在不丢失响应式的情况下,把对象数据分解/扩散(解构)
  • 前提:针对的是响应式对象(reactive封装的)非普通对象
  • 注意:不创造响应式,而是延续响应式

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

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

相关文章

论文阅读:Speculative RAG: Enhancing Retrieval Augmented Generation through Drafting

论文地址:https://arxiv.org/abs/2407.08223 RAG 将 LLM 的生成能力与外部知识源相结合,以提供更准确和最新的响应。最近的 RAG 进展侧重于通过迭代 LLM 完善或通过 LLM 的额外指令调整获得自我批判能力来改进检索结果。在这项工作中,作者介…

编程中的智慧六:单例、原型、建造者

上一篇咱们结合Spring介绍了设计模式中的工厂模式相关方法,其实现在Java开发基本上都是基于Spring框架开发,所以后续我们在开发过程中基本上很少自己重写一个工厂模式,都是直接使用Spring来完成。今天咱们接着看剩下的创建型设计模式&#xf…

Dubbo学习笔记

Dubbo 简介 Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。 其中文官网:https://dubbo.gitbooks.io/dubbo-user-book/content/ 特性和用法 架构 节点角色说明 节点角色…

应用层的重点协议

目录 一、DNS 二、NAT 1、技术背景 2、NAT机制IP转化过程 三、NAPT NAT技术的缺陷 四、HTTP 1、协议格式 2、HTTP请求 1)method(方法) GET请求的特点 POST请求的特点 GET和POST的区别 2)URL(网址) 基本格式 关于URL encode 3&#xff0…

c++11:异常

目录 c异常与c传统处理错误的区别 c语言处理错误的方式 c处理错误的方式 异常的抛出和处理 demo 异常的重新抛出 demo 异常安全 noexcept 自定义异常体系 c舍弃了c语言处理错误的方式,引入了异常来处理错误。 c异常与c传统处理错误的区别 c语言处理错…

js什么情况下使用同步,什么时候异步加载

JavaScript 中的同步和异步操作主要取决于代码的执行过程。以下是一些常见的同步和异步使用场景: 同步操作: 基本操作: 赋值、算术运算、逻辑判断等基本语句,这些操作都是同步执行的。 DOM 操作: 获取、修改 DOM 元素的属性和内容,这些操作都是同步执行的。 阻塞操作: 一些耗…

el-table表头使用el-dropdown出现两个下拉框

问题描述:el-table在固定右边列时,表头使用el-dropdown会出现两个下拉框,如图所示: 解决方法: 1.只显示第一个下拉框,通过控制样式将其他的下拉框display:none; 2.如图所示,修改插槽写法&…

<数据集>学生课堂行为识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:13899张 标注数量(xml文件个数):13899 标注数量(txt文件个数):13899 标注类别数:8 标注类别名称:[js, tt, dk, zt, dx, zl, jz, xt] # 举手 js # 抬头听课 …

从FasterTransformer源码解读开始了解大模型(2.3)代码通读04

从FasterTransformer源码解读开始了解大模型(2.3)代码解读04-forward函数 写在前面的话 本篇的内容继续解读forward函数,从972行开始进行解读 零、embedding函数 让我们考虑一种不包含prefix_soft_prompt的情况,从999行的embe…

在 PostgreSQL 里如何实现数据的冷热数据分层存储的自动化策略调整?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何实现数据的冷热数据分层存储的自动化策略调整 在 PostgreSQL 里如何实现数据的冷…

【数据分享】2013-2022年我国省市县三级的逐日SO2数据(excel\shp格式\免费获取)

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000——2022年的省市县三级的逐日PM2.5数据和2013-2022年的省市县三级的逐日CO数据(均可查看之前的文章获悉详情)! 本次我们分享的是我国2013——2022年的省…

mongodb数据导出与导入

一、先去检查mongodump mongodump --version 如果报 mongodump version: built-without-version-string 或者其他的较老的版本,直接去下载最新的【传送门】 【以Ubuntu18.04为例】 安装工具 假设你下载的是 .tgz 文件(适用于 Linux 系统)&am…

【项目】星辰博客介绍

目录 一、项目背景 二、项目功能 1. 登录功能: 2. 列表页面: 3. 详情页面: 4. 写博客: 三、技术实现 四、功能页面展示 1. 用户登录 2. 博客列表页 3. 博客编辑更新页 4.博客发表页 5. 博客详情页 五.系统亮点 1.强…

高性能图数据库Neo4j从入门到实战

图数据库Neo4j介绍 什么是图数据库(graph database) 随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈…

【数据结构】栈和队列的深度探索,从实现到应用详解

💎所属专栏:数据结构与算法学习 💎 欢迎大家互三:2的n次方_ 🍁1. 栈的介绍 栈是一种后进先出的数据结构,栈中的元素只能从栈顶进行插入和删除操作,类似于叠盘子,最后放上去的盘子最…

广州机房搬迁网络部署方案

新机房网络部署应包括核心模块、业务模块、光传输模块、安全模块、流量采集模块、路由模块、带外管理模块等,每个模块都根据业务需求规划成多个POD(Point Of Delivery,基本物理设计单元)。 核心模块部署主要实现各业务模块的高速互…

HighConcurrencyCommFramework c++通讯服务器框架 :目录,修改标题,配置,日志打印

目录规划 nginx 根目录下的三个文件 makefile :编译项目的入口,编译项目从这里开始 config.mk:也是个配置脚本用来增加变动的东西,应付可变 common.mk:最核心的编译脚本,每个子目录都要被编译.cpp程序 配置文件 配…

postman创建mock server

B站博主的说明:

《python语言程序设计》第6章2题(求一个整数各个数字的和)编写一个函数

求一个整数各个数字的和编写一个函数,计算一个整数各个数字的和, def sumDigits(n):a n // 100b n % 100 // 10c n % 100 % 10print(f"{n}数,分成个,十,百,{a}{b}{c}", a b c)sumDigits(23…

算法日记day 16(二叉树的广度优先遍历|反转、对称二叉树)

一、二叉树的层序遍历 题目: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3]…