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

Vue3:shallowRef与shallowReactive

目录

一.shallowRef 和 shallowReactive

1.shallowRef

2.shallowReactive

二.ref 和 reactive

1. ref 

 2. reactive

三.各自使用场景

1.shallowRef

2.shallowReactive

3.ref

4.reactive

四.shallowRef 使用

五.shallowReactive使用

六.效果


一.shallowRefshallowReactive

1.shallowRef

用于创建一个基本类型的响应式引用。它只对该引用本身进行响应式处理,不会深入到引用所指向的对象内部。这意味着如果引用的值是一个对象或数组,那么这个对象或数组内部的变化将不会触发视图更新。

2.shallowReactive

用于创建一个对象的响应式包装。与reactive类似,但它只会使对象的第一层属性变为响应式,而不会递归地使所有嵌套属性变为响应式。这可以减少不必要的性能开销,特别是在处理大型对象时。

二.refreactive

1. ref 

用于创建一个响应式引用,它可以用于任何类型的值(包括对象、数组等)。当引用的值发生变化时,会触发视图的更新。

 2. reactive

用于创建一个对象的响应式包装,它会递归地使所有嵌套属性变为响应式。这使得对嵌套属性的任何更改都会触发视图的更新。

三.各自使用场景

1.shallowRef

当你需要创建一个基本类型的响应式引用,并且希望避免深度监听时,可以使用 shallowRef。例如,如果你有一个布尔值或数字作为状态,并且不希望这些值的变化导致整个对象被重新渲染,可以使用 shallowRef

2.shallowReactive

当你需要创建一个对象的响应式包装,但只关心第一层属性的变化,并且希望减少性能开销时,可以使用 shallowReactive。例如,如果你有一个包含大量嵌套属性的大型对象,但只需要监视顶层属性的变化,可以使用 shallowReactive

3.ref

当你需要创建一个可以包含任何类型值的响应式引用时,可以使用 ref。例如,如果你有一个复杂的对象或数组作为状态,并且希望对其整体进行响应式处理,可以使用 ref

4.reactive

当你需要创建一个对象的完全响应式包装,并希望所有嵌套属性的变化都能触发视图更新时,可以使用 reactive。例如,如果你有一个包含多个嵌套属性的对象,并且希望每个属性的变化都能引起视图的更新,可以使用 reactive

四.shallowRef 使用

求和与修改整个人可成功修改

修改名字无法成功修改

五.shallowReactive使用

修改汽车品牌可成功修改

修改汽车颜色和引擎无法成功修改

六.代码

<template><h2>求和为:{{ sum }}</h2><h2>名字为: {{ person.name }}</h2><h2>年龄为:{{ person.age }}</h2><button @click="ChangeSum">求和加一</button><button @click="ChangeName">修改名字</button><button @click="ChangePerson">修改整个人</button><span></span><h2>汽车品牌: {{ car.brand }}</h2><h2>汽车颜色:{{ car.options.color }}</h2><h2>汽车引擎:{{ car.options.engine }}</h2><button @click="ChangeBrand">修改汽车品牌</button><button @click="ChangeColor">修改汽车颜色</button><button @click="ChangeEngine">修改引擎</button></template><script lang="ts" setup name="App">
import { options } from 'node_modules/axios/index.cjs';
import { ref , reactive, shallowRef , shallowReactive} from 'vue';let car = shallowReactive({brand:'宝马',options:{color:'红色',engine:'V6',}})function ChangeBrand(){car.brand = '奔驰'}function ChangeColor(){car.options.color = '白色'}function ChangeEngine(){car.options.engine = 'V16'}let sum = shallowRef(0)let person = shallowRef({name:'小明',age:18})function ChangeSum(){sum.value += 1}function ChangeName(){person.value.name = '小红'}function ChangePerson(){person.value = {name:'小兰',age:28}}</script><style>
button{width: 150;height: 40;
}</style>

六.效果

相关文章:

Vue3:shallowRef与shallowReactive

目录 一.shallowRef 和 shallowReactive 1.shallowRef 2.shallowReactive 二.ref 和 reactive 1. ref 2. reactive 三.各自使用场景 1.shallowRef 2.shallowReactive 3.ref 4.reactive 四.shallowRef 使用 五.shallowReactive使用 六.效果 一.shallowRef 和 shal…...

django开发流程3(轮播图)

1.在models中创建一个模板 class Ads(models.Model):title models.CharField(verbose_name"标题", max_length30)image models.ImageField(verbose_name"广告图", upload_to"ads")url models.URLField(verbose_name"链接网址", de…...

MySQL的增删查改(基础)一

一.增 方式1&#xff08;简写插入&#xff09;&#xff1a; 语法&#xff1a;insert into 表名 values&#xff08;值&#xff0c;值&#xff0c;值……&#xff09;; 这里insert into 代表要插入一条新数据行&#xff0c;values后面就是该行的值&#xff0c;其中后面的值的…...

深度学习(入门)03:监督学习

1、监督学习简介 监督学习&#xff08;Supervised Learning&#xff09;是一种重要的机器学习方法&#xff0c;它的目标是通过“已知输入特征”来预测对应的标签。在监督学习中&#xff0c;每一个“特征-标签”对被称为样本&#xff08;example&#xff09;&#xff0c;这些样…...

Django——admin创建和使用

1. Django Admin简介 Django Admin是Django框架自带的一个管理后台工具&#xff0c;它允许开发者通过一个直观的Web界面轻松地管理应用中的数据模型。Admin提供了模型的CRUD&#xff08;Create,Read, Update, Delete&#xff09;操作&#xff0c;以及数据的批量处理和搜索功能…...

鸿蒙开发(NEXT/API 12)【硬件(取消注册智慧出行连接状态的监听)】车载系统

取消注册智慧出行连接状态的监听。 接口说明 接口名描述[off] (type: ‘smartMobilityStatus’, smartMobilityTypes: SmartMobilityType[], callback?: Callback): void取消注册智慧出行连接状态的监听。 开发步骤** 导入Car Kit模块。 import { smartMobilityCommon } fr…...

JVM中的GC流程与对象晋升机制详解

一、垃圾回收的概念 1.1 什么是垃圾回收&#xff1f; 垃圾回收是自动回收不再使用的对象&#xff0c;从而释放内存的一种机制。通过GC&#xff0c;JVM能够动态地管理内存的分配与回收&#xff0c;避免内存泄漏和溢出。 1.2 GC的重要性 内存管理&#xff1a;GC自动处理对象的…...

SQL:如果字段需要排除某个值但又有空值时,不能直接用“<>”或not in

在 SQL 中&#xff0c;如果字段需要排除某个值但又有空值存在时&#xff0c;不能直接使用“<>”&#xff08;不等于&#xff09;或 NOT IN&#xff0c;是因为这些操作会把空值也考虑进去&#xff0c;但通常情况下可能并不希望空值被这样处理。 以下是一些解决方法&#…...

运放模块的选型参数

增益带宽积-----尤其重要&#xff1a; GWB 增益*带宽 压摆率&#xff1a; 高带宽的运放一般都是电流型运放&#xff1a; 注意压摆率计算公式里面的Vopp参数是放大后的电压最大值&#xff1a; 参数&#xff0c;布局一定参考数据手册&#xff01;&#xff01;&#xff01;&…...

win10文件共享设置 - 开启局域网文件共享 - “您没有权限访问,请与网络管理员联系请求访问权限”解决方案

实现步骤&#xff1a; 1、在“网络和共享中心”关闭“密码保护的共享” 2、在“启用和关闭windows功能”中开启SMB文件共享支持。 3、在磁盘安全选项中添加“everyone”用户&#xff08;重点&#xff01;&#xff09; 详细操作&#xff1a; https://blog.csdn.net/Skyirm/a…...

Go基础编程 - 16 - 方法

方法 概述1. 方法定义2. 值方法、指针方法3. 方法集合 匿名字段表达式自定义 error 上一篇&#xff1a;延迟调用&#xff08;defer&#xff09; 概述 1. 方法定义 func (receiver T) 方法名(参数列表) (返回值列表)&#xff5b;&#xff5d;receiver&#xff1a;接收者参数名T…...

接口报错500InvalidPropertyException: Invalid property ‘xxx[256]‘,@InitBinder的使用

org.springframework.beans.InvalidPropertyException: Invalid property ‘xxx[256]’ of bean class [com.xxl.MailHead]: Invalid list index in property path ‘xxx[256]’; nested exception is java.lang.IndexOutOfBoundsException: Index: 256, Size: 256 从报错可以…...

Web 3.0 介绍

Web 3.0 是互联网的下一代发展阶段&#xff0c;通常被称为去中心化的网络。它与目前的 Web 2.0&#xff08;以社交媒体、云计算和中心化平台为主导&#xff09;不同&#xff0c;强调用户对数据和内容的更多掌控&#xff0c;依靠区块链、加密货币、去中心化应用&#xff08;DApp…...

一起搭WPF界面之界面切换绑定

一起搭WPF界面之界面切换绑定 前言界面填充总结 前言 在主界面中定义Grid网格&#xff0c;界面网格化后&#xff0c;可以模块化搭建界面进行填充。 界面填充 总结 提示&#xff1a;这里对文章进行总结&#xff1a; 例如&#xff1a;以上就是今天要讲的内容&#xff0c;本文仅…...

css 数字比汉字要靠上

这个问题通常是由于数字字体的下排的问题造成的&#xff0c;也就是数字的底部边缘位置比汉字的顶部边缘位置更靠下。为了解决这个问题&#xff0c;可以尝试以下几种方法&#xff1a; 使用CSS的vertical-align属性来调整对齐方式。例如&#xff0c;可以将数字的对齐方式设置为to…...

sentinel原理源码分析系列(三)-启动和初始化

本文是sentinel原理源码分析系列第三篇&#xff0c;分析sentinel启动和初始化 启动/初始化 sentinel初始化分两块&#xff0c;静态初始和适配器(包括aop) 静态初始 1. Root EntranceNode 如果我们用一栋楼类比资源调用&#xff0c;root EntranceNode好比一栋楼的大门&…...

计算机网络(九) —— Tcp协议详解

目录 一&#xff0c;关于Tcp协议 二&#xff0c;Tcp报头字段解析 2.0 协议字段图示 2.1 两个老问题 2.2 16位窗口大小 2.3 32位序号和确认序号 2.4 6个标记位 三&#xff0c;Tcp保证可靠性策略 3.1 确认应答机制&#xff08;核心&#xff09; 3.2 超时重传机制 3.3 …...

跨境支付专业术语

跨境支付 跨境支付是指支付或者清结算过程发生在两个及以上的国家地区之间、实现了资金跨国跨地区转移的支付行为。 境外本地支付 境外本地支付是指支付和清结算过程同时发生在单个国家或地区境内&#xff0c;资金在本国家或地区内部转移的支付行为。 国际汇款 国际汇款指跨…...

多级目录SQL分层查询

需求&#xff1a;有多级目录&#xff0c;而目录的层级是不固定的&#xff0c;如下图所示&#xff1a; 数据结构&#xff1a; sql语句&#xff1a; <select id"getList" resultType"com.hikvision.idatafusion.dhidata.bean.vo.knowledgebase.KnowledgeBaseT…...

VulnHub-SickOs1.1靶机笔记

SickOs1.1靶机笔记 概述 Vulnhub的靶机sickos1.1 主要练习从互联网上搜取信息的能力&#xff0c;还考察了对代理使用&#xff0c;目录爆破的能力&#xff0c;很不错的靶机 靶机地址&#xff1a; 链接: https://pan.baidu.com/s/1JOTvKbfT-IpcgypcxaCEyQ?pwdytad 提取码: yt…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...