Vue3中的ref和shallowRef、reactive和shallowReactive

一:ref、reactive简介

  • ref和reactive是Vue3中定义响应式数据的一种方式。
  • ref通常用来定义基础类型数据。
  • reactive通常用来定义复杂类型数据。

二、shallowRef、shallowReactive简介

  • shallowRef和shallowReactive是Vue3中定义浅层次响应式数据的方式

三、Api使用对比

注意:监听不到变化的数据,在页面中其它数据变化被监听到时,会同步改变

shallowRefshallowReactive
修改浅层数据正常监听正常监听
修改深层数据无法监听无法监听
修改对象数据自身正常监听无法监听
修改数组对象自身正常监听正常监听

1、shallowRef

① 定义基础数据

let sum = shallowRef(0)sum.value++  // 数据正常监听

② 定义对象、数组

// 1、定义对象
let personRef = shallowRef({name:'李四',age:18,
})
//    修改深层数据
personRef.value.name = '小猪佩奇'; // 监听不到
//    修改浅层数据(自身)
personRef.value = {name:'小猪佩奇',age:2}; // 数据可正常监听// 2、定义数组
let listRef = shallowRef([1,2,3,4])
//    修改深层数据
listRef.value[0] += 2; // 监听不到
//    修改浅层数据(自身)
listRef.value = [9,99,999]; // 数据可正常监听

2、shallowReactive

①、定义对象

let personRea = shallowReactive({name:'张三',age:25,children:{name:'张XX',age:1}
})
//    修改浅层次数据
personRea.name = '张思锐'; // 可正常监听
personRea.children = {name:'张Y',age:1.5}; // 可正常监听
//    修改深层次数据
personRea.children.name = '张YY'; // 数据监听不到
//    修改数据本身
Object.assign(personRea,{name:'张三三',age:26,children:{name:'张XX',age:2}
}); // 数据监听不到

②、定义数组

let listRea = shallowReactive([{a:1},{a:2}
])
// 修改浅层次数据
listRea[0] = {a:99}; // 可正常监听
// 修改深层次数据
listRea[0].a += 2; // 监听不到
// 修改数据本身
listRea.length = 0 // 可正常监听

四、关于浏览器插件Vue.js.devtools的提醒

注意:通过shallowRef和shallowReactive定义的数据改变时未被监听到时,在浏览器插件Vue.js devtools中也监听不到变化,但是在页面中别的响应式数据变化时,会触发改变

1、 

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

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

相关文章

套接字的多种可选项(修改IO缓冲区大小及TCP_NODELAY)

标题套接字的多种可选项 我们进行套接字编程时往往只关注数据通信,而忽略了套接字具有的不同特性。但是,理解这些特性并根据实际需要进行更改也十分重要。 从上表可以看出,套接字可选项是分层的。IPPROTOIP层可选项是IP协议相关事项&#x…

【JavaSE篇】——数组的定义与使用

目录 本章的目标: 🎈数组的基本概念 🍭创建数组 🍭数组的初始化 🍭数组的使用 👉数组中元素访问 👉遍历数组 🎈数组是引用类型 🍭初始JVM的内存分布 &#x1f…

2024017期传足14场胜负前瞻

2024017期赛事由亚洲杯2场、英总杯2场、德甲2场、意甲4场、西甲4场组成。售止时间为1月28日(周日)19点00分,敬请留意: 本期深盘场次同样适中,1.5以下赔率3场,1.5-2.0赔率6场,其他场次基本皆是平…

Java复习系列之阶段二:数据库

1. 基础语法 1.1 DQL(数据查询语句) 执行顺序: from、join 、on、where、group by、having、select、distinct、order by、limit 1.2 DML(数据修改语言) 对数据表的增删改 insert into update set delete form 1.…

javax.servlet.http包

javax.servlet.http包 javax.srvlet.http包是对javax.servlet包的扩展。该包的类和接口处理使用HTTP进行通信的servlet。这些servlet也称为HTTP Servlet。您需要扩展HttpServlet类来开发HTTP Servlet。javax.servlet.http包经常使用的接口包括: HttpServletRequest接口HttpSe…

Java 基础 - 反射

Java 基础 - 反射 文章目录 Java 基础 - 反射1 什么是类对象2 获取类对象的方法3 反射通用操作【重点】3.1 常见方法3.2 通用操作 4 内省 1 什么是类对象 类的对象:基于某个类 new 出来的对象,也称为实例对象。 类对象:类加载的产物&#x…

第9章 多线程

第9章 多线程 学习目标 了解进程和线程的区别 能够理解并发与并行的区别 能够使用继承类的方式创建多线程 能够使用实现接口的方式创建多线程 能够说出实现接口方式的好处 能够解释安全问题的出现的原因 能够使用同步代码块解决线程安全问题 能够使用同步方法解决线程安全问题…

滴水逆向三期笔记与作业——02C语言——10 Switch语句反汇编

滴水逆向三期笔记与作业——02C语言——10 Switch语句反汇编 一、Switch语句1、switch语句 是if语句的简写2、break加与不加有什么特点?default语句可以省略吗?3、游戏中的switch语句(示例)4、添加case后面的值,一个一个增加&…

Java笔记 --- 二、Stream流

二、Stream流 结合Lambda表达式,简化集合、数组的操作 获取Stream流对象 单列集合获取Stream流 双列集合获取Stream流 数组获取Stream流 一堆零散的数据获取Stream流 Stream流的静态方法of的形参是一个可变参数,可以传递零散数据,也可以传递…

记录一道ctf web题

0x00 前言 某同学发在群里一道不知道什么ctf的web题 0x01 bypass open_basedir 开始没想那么多,看到了可以执行phpinfo,直接先eval一个一句话上去看看什么情况: 接着发现了没有权限去读取/var/www/html以外的目录,那么我开始想的…

基于51单片机智能电子秤

实物显示效果: https://www.bilibili.com/video/BV1Wb4y1A7Aw/?vd_source6ff7cd03af95cd504b60511ef9373a1d 功能介绍: (1)用键盘设计单价; (2)称重后同时显示该物品的重量、单价和总额&…

sqlx的初体验

sqlx的介绍和优点 sqlx 是一个用于 Go 语言的数据库工具,它在标准库的 database/sql 包的基础上提供了一些额外的功能,使得数据库操作更加方便和灵活。 优点: 查询构建器: sqlx 提供了更强大的查询构建器,使得在 Go…