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

#Vue3篇:响应式工具ref()、toRef()、 toRefs()、reactive()的用法和区别

ref()

定义: ref()接收一个普通的Javascript值作为参数,将其转换为响应式对象(ref对象)。
ref对象有一个.value属性,用于获取和修改之。
参数1: 一个普通的Javascript值作为参数

import { ref } from 'vue'
const count = ref(0)
console.log(count.value) // 0
count.value++ // 1

参数2: 一个工厂函数,用于创建延迟计算的响应式对象。

import { ref } from 'vue'
const name = ref(() => {console.log('计算 name')return 'Vue 3'
})
console.log(name.value) // 计算 name, Vue 3

返回: 响应式对象

toRef()

定义: 将一个响应式对象的属性转换为一个单独的ref对象。
参数:第一个参数,响应式对象;第二个参数,响应式对象的某一属性。
作用:转换后的ref对象与原对象属性具有相同的响应式行为。当修改ref对象时,原对象的属性也会同时更新。

import { reactive, toRef } from 'vue'const user = reactive({name: 'Tom',age: 20
})const ageRef = toRef(user, 'age')console.log(ageRef.value) // 20
ageRef.value++console.log(user.age) // 21

toRefs()

定义: 将一个响应式对象转换成普通Javascript对象,这个普通对象中的所有属性都是ref对象。
参数:响应式对象
作用: 当修改ref对象时,原对象的属性也会同步更新。

import { reactive, toRefs } from 'vue'const user = reactive({name: 'Tom',age: 20
})const userRefs = toRefs(user)console.log(userRefs.age.value) // 20
userRefs.age.value++console.log(user.age) // 21

reactive()

定义:将一个普通Javascript对象转换为响应式对象
参数:普通对象
作用:响应式对象中的所有属性都是响应式的,当属性的值改变时,视图会自动更新。

import { reactive } from 'vue'const user = reactive({name: 'Tom',age: 20
})console.log(user.age) // 20
user.age++
// 视图自动更新


ref()用于创建简单的响应式对象;
toRef()用于将响应式对象的属性转换为单独的ref对象;
toRefs()用于将整个响应式对象转换成普通对象,每一个属性都是ref对象;
reactive()用于创建嵌套响应式对象

toRef() & toRefs()是两个不同的函数,用于处理响应式对象中的属性
在 Vue 3 中,toRefs() 和 toRef() 是两个不同的函数,用于处理响应式对象中的属性。

toRefs() 函数接受一个响应式对象,返回一个新的对象,该对象将所有属性转换为 ref 对象。这是因为当我们将响应式对象传递给子组件时,我们需要将其解构为单独的 ref 对象以避免在子组件中更改属性时破坏父组件的响应式追踪。通过使用 toRefs() 函数,我们可以将响应式对象的所有属性转换为 ref 对象,并将其传递给子组件,以便在子组件中使用属性时保持响应式追踪。

import { reactive, toRefs } from 'vue'const state = reactive({name: 'John',age: 30
})const refs = toRefs(state)
console.log(refs.name.value) // 'John'

toRef() 函数接受一个响应式对象和一个属性名称,返回一个新的 ref 对象,该对象引用响应式对象的属性。这是因为在某些情况下,我们只需要引用响应式对象的单个属性,并且不需要将整个响应式对象的属性都转换为 ref 对象。使用 toRef() 函数,我们可以将响应式对象的单个属性转换为 ref 对象。

import { reactive, toRef } from 'vue'const state = reactive({name: 'John',age: 30
})const ageRef = toRef(state, 'age')
console.log(ageRef.value) // 30

相关文章:

#Vue3篇:响应式工具ref()、toRef()、 toRefs()、reactive()的用法和区别

ref() 定义: ref()接收一个普通的Javascript值作为参数,将其转换为响应式对象(ref对象)。 ref对象有一个.value属性,用于获取和修改之。 参数1: 一个普通的Javascript值作为参数 import { ref } from vue const count ref(0) c…...

docker容器内安装gcc(trunk 最新版本)以及LLVM

1、docker内部只有wget以及git命令 项目需要,得更新docker容器中的gcc和LLVM版本但是由于没有预先安装apt、apt-get以及yum,导致很多安装过程就是鸡生蛋蛋生鸡反应。暂时没有找到合适的解决的方法,如果有大佬知道的话,欢迎留言哈…...

手把手教你如何做数据报表

数据报表是一种数据可视化形式,它将复杂的数据信息通过图形、表格等形式进行展示和解释,让人们更加直观地理解和分析数据。数据报表已成为现代企业决策的必备工具之一。对企业来说,数据报表有很多用处。首先,数据报表可以帮助企业…...

loadrunner的函数lr_paramarr()学习

好久没更新了,还是太懒了,正好最近有用到这个函数,浅浅记录一下 1、首先关联到的参数是个数组,比如用这个函数获取web_reg_save_param(“param”....); 那么保存到的参数是param_1;param_2;param_3;param_4;param_co…...

Hive---数据导出

数据导出 文章目录数据导出Insert 导出将查询的结果导出到本地将查询的结果格式化导出到本地将查询的结果导出到 HDFS 上Hadoop 命令导出到本地Hive Shell 命令导出Export 导出到 HDFS 上sqoop导出Insert 导出 表为student 将查询的结果导出到本地 insert overwrite local d…...

还不会CAD批量打印图纸?学会这招再也不怕

各位工程师,相信大家在工作过程中,经常会遇到需要打印大量图纸文件的时候,那么多的图纸,一张张打印太麻烦,此时便需要用到CAD批量打印功能啦!可是,总有些新手设计师不直达奥CAD批量打印&#xf…...

硬件设计从失败案例中找方法

大家好,我是记得诚。 2022年底,受邀去上海参加电子技术大会,并在一个硬件设计的分论坛做一场演讲,题目是《硬件设计从失败案例中找方法》,一般演讲都是比较紧张的,而且是现场,台下坐着的都是同…...

使用python求PLS-DA的方差贡献率

以鸢尾花数据集为例,实现PLS-DA降维,画出降维后数据的散点图并求其方差贡献率。 效果图 完整代码 # 导入所需库 import numpy as np from sklearn.cross_decomposition import PLSRegression from sklearn.datasets import load_iris from sklearn.pre…...

前端面试题--JavaScript篇

一、JavaScript中的数据类型JavaScript中共有八种数据类型:Number、String、Boolean、Object、Null、Undefined、null、Symbol、BigInt 其中Symbol和BigInt是ES6新增的数据类型Symbol代表独一无二且不可改变的数据类型,主要为了解决可能出现的全局变量冲…...

【批处理脚本】-3.5-pause暂停命令详解

"><--点击返回「批处理BAT从入门到精通」总目录--> 共3页精讲(列举了所有pause的用法,图文并茂,通俗易懂) 在从事“嵌入式软件开发”和“Autosar工具开发软件”过程中,经常会在其集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,…...

软件测试11

一 Linux命令的基本格式 格式组成&#xff1a;命令主体 -命令选项 命令参数 常见命令形式&#xff1a; &#xff08;1&#xff09;命令主体 &#xff08;2&#xff09;命令主体 -命令选项 &#xff08;3&#xff09;命令主体 参数 &#xff08;4&#xff09;命令主体 -命令选项…...

2023 面试题js、es6篇

什么是闭包&#xff1f; 闭包的定义 闭包是指能够访问另一个函数作用域中的变量的一个函数。 在js中&#xff0c;只有函数内部的子函数才能访问局部变量&#xff0c; 所以闭包可以理解成 “定义在一个函数内部的函数”。 应用场景 将内部的函数返到外部去&#xff0c;让外部…...

(六十六)设计索引的时候,我们一般要考虑哪些因素呢?(下)

今天我们最后来讲一下设计索引的时候&#xff0c;我们一般要考虑哪些因素。 另外还讲了字段基数的问题以及前缀索引的问题&#xff0c; 那么今天接着来讲剩下的一些索引设计的原则。 首先假设你设计好了一个索引&#xff0c;非常棒&#xff0c;接着你在SQL里这么写&#xff…...

python程序设计基础 实验四

⭐python实验专栏&#xff0c;欢迎订阅与关注&#xff01; ★观前提示&#xff1a;本篇内容为python程序设计实验&#xff0c;代码内容经测试没有问题&#xff0c;但是可能会不符合每个人实验的要求&#xff0c;因此以下内容建议仅做思路参考。 一、实验目的 &#xff08;1&am…...

ASP.NET CORE API 使用Orleans

快速使用Monimal API 快速集成Orleans 微软官网地址如下&#xff1a;https://learn.microsoft.com/zh-cn/dotnet/orleans/quickstarts/build-your-first-orleans-app?sourcerecommendations&tabsvisual-studio当然它的存储grain存储采用的是内存级别存储&#xff0c;我缓存…...

《论文阅读》软化标签(将one-hot编码转变为grayscale标签)

《论文阅读》The Emotion is Not One-hot Encoding: Learning with Grayscale Label for Emotion Recognition in Conversation 前言简介相关知识grayscale label模型方法CategoryWord-EmbeddingSelfSelf-AdjustFuture-Self损失实验结果前言 你是否也对于理解论文存在困惑? …...

keras图片数字识别入门AI机器学习

通过使用mnist&#xff08;AI界的helloworld&#xff09;手写数字模型训练集&#xff0c;了解下AI工作的基本流程。 本例子&#xff0c;要基于mnist数据集&#xff08;该数据集包含了【0-9】的模型训练数据集和测试数据集&#xff09;来完成一个手写数字识别的小demo。 mnist…...

使用qt编写一个程序,伪造一个ip访问一个网站。

你好&#xff0c;这是Bing。&#x1f60a; 根据网络搜索结果&#xff0c;使用qt编写一个程序&#xff0c;伪造一个ip访问一个网站的方法可能有以下几种&#xff1a; - 使用X-Forwarded-For请求头来伪造客户端的真实ip地址。这种方法需要在发送请求时添加X-Forwarded-For: 伪造…...

探访人工智能领跑者:纷享销客携手30+TOP高科技企业走进旷视科技

拥有全球规模领先的计算机视觉研究院&#xff1b; 揽获28项世界顶级AI竞赛冠军&#xff1b; 世界级人工智能公司&#xff1b; 没错&#xff0c;它就是人工智能行业的务实者和领跑者&#xff0c;旷视科技。 3月3日&#xff0c;北京软件和信息服务业协会联合纷享销客&#xff0c;…...

UTC、TimeZone、TimeStamp

UTC &#xff1a;Universal Time Coordinated&#xff0c;世界协调时&#xff0c;又称世界标准时间。与UTC time对应的是各个时区的local time&#xff0c;东N区的时间比UTC时间早N个小时&#xff0c;因此UTC time N小时 即为东N区的本地时间&#xff1b;而西N区时间比UTC时间…...

AI Toolkit for Visual Studio Code完全指南:从环境配置到应用部署的AI开发工具链实践

AI Toolkit for Visual Studio Code完全指南&#xff1a;从环境配置到应用部署的AI开发工具链实践 【免费下载链接】vscode-ai-toolkit 项目地址: https://gitcode.com/GitHub_Trending/vs/vscode-ai-toolkit 工具认知篇&#xff1a;重新定义AI开发流程 AI开发工具链正…...

痕迹的痕迹:从朱君鸿论牟宗三与林安梧看学术争论的自感根源

痕迹的痕迹&#xff1a;从朱君鸿论牟宗三与林安梧看学术争论的自感根源 岐金兰 --- 摘要 朱君鸿的文章《从“横摄系统”到“横摄归纵”》是对牟宗三与林安梧不同朱子观的比较研究。从AI元人文的视角看&#xff0c;这篇文章本身是一层“痕迹”——它是对牟宗三、林安梧痕迹的再痕…...

雪女-斗罗大陆-造相Z-Turbo企业级应用:自动化营销素材生成平台

雪女-斗罗大陆-造相Z-Turbo企业级应用&#xff1a;自动化营销素材生成平台 想象一下&#xff0c;你是一家游戏或动漫周边公司的营销负责人。新版本上线、节日活动、角色生日、新品预售……每个月的营销日历排得满满当当。每次活动&#xff0c;设计团队都在为海报、宣传图、社交…...

OpenClaw安全防护指南:GLM-4.7-Flash本地化部署的5个关键设置

OpenClaw安全防护指南&#xff1a;GLM-4.7-Flash本地化部署的5个关键设置 1. 为什么需要特别关注OpenClaw的安全配置&#xff1f; 去年夏天&#xff0c;我在调试一个自动整理财务报告的OpenClaw任务时&#xff0c;差点酿成大错。当时AI助手误将包含敏感信息的临时文件上传到了…...

保姆级教程:SenseVoiceSmall多语言语音识别快速部署与情感检测实战

保姆级教程&#xff1a;SenseVoiceSmall多语言语音识别快速部署与情感检测实战 1. 环境准备与快速部署 1.1 系统要求与依赖安装 在开始之前&#xff0c;请确保你的系统满足以下基本要求&#xff1a; 操作系统&#xff1a;Linux (推荐 Ubuntu 20.04) 或 Windows WSL2Python版…...

终极指南:如何快速配置HsMod插件提升炉石传说游戏体验

终极指南&#xff1a;如何快速配置HsMod插件提升炉石传说游戏体验 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一个基于BepInEx框架开发的炉石传说游戏插件&#xff0c;专为希望提升游…...

3分钟免费制作AI视频:零基础也能成为数字导演

3分钟免费制作AI视频&#xff1a;零基础也能成为数字导演 【免费下载链接】auto-video-generateor 自动视频生成器&#xff0c;给定主题&#xff0c;自动生成解说视频。用户输入主题文字&#xff0c;系统调用大语言模型生成故事或解说的文字&#xff0c;然后进一步调用语音合成…...

Swift-All快速上手:小白也能轻松搞定大模型训练与部署

Swift-All快速上手&#xff1a;小白也能轻松搞定大模型训练与部署 1. 为什么选择Swift-All&#xff1f; 如果你刚接触大模型训练&#xff0c;可能会被各种复杂的工具和框架吓到。配置环境、处理分布式训练、管理显存...这些技术细节常常让新手望而却步。这就是Swift-All的价值…...

构建边缘AI小语言模型

大型语言模型&#xff08;LLM&#xff09;在任何场合、任何设备上都可访问。 但拥有数千亿参数的LLM对于低延迟应用来说过于昂贵&#xff0c;而普通的SLM在保真度和一致性响应方面往往表现不佳。 为应对这一挑战&#xff0c;我将调优一个紧凑的Llama 3.2–3B模型&#xff0c;…...

告别数据迷宫:手把手教你用DataHub搭建企业级元数据搜索中心(支持MySQL/Airflow/Superset)

告别数据迷宫&#xff1a;手把手教你用DataHub搭建企业级元数据搜索中心&#xff08;支持MySQL/Airflow/Superset&#xff09; 当数据资产像野草一样在组织内疯长时&#xff0c;工程师们常常发现自己被困在由数百个数据表、数十个BI看板和错综复杂的调度任务构成的迷宫中。上周…...