Vue3 ref函数和reactive函数

一、ref函数

我们在setup函数中导出的属性和方法虽然能够在模板上展示出来,但是并没有给属性添加响应式,因此,我们需要使用ref函数来为我们的数据提供响应式。

(一)引入ref函数

import { ref } from "vue";

(二)创建响应式数据

const 属性名 = ref(属性值);

这里我们为什么可以用const进行声明?

如果我们定义三个响应式属性,并输出,就会发现这些属性都被打包为RefImpl 对象(也称为引用对象或ref对象),我们可以通过 .value 值来访问和修改我们的属性。

因此,即使我们使用const 来定义一个变量,改变对象中的属性并不会对对象本身产生什么影响。

这里的传入值为对象,value就会变为一个Proxy对象(后面会解释其原理)

(三)响应式数据的读取和修改

基本类型的数据:变量.value = 值

对象类型的数据:变量.value.属性名 = 值

注意:我们在模板中读取属性的时候并不需要使用.value,ref的原理仍然是Object.defineProperty

二、reactive函数

reactive函数和ref函数的作用类似,不过是定义一个对象或数组类型的响应式数据。

(一)引入reactive函数

import { reactive } from "vue";

(二)创建响应式数据

const 属性 = reactive(对象) 或 const 属性 = reactive(数组)

返回的是一个使用Proxy代理的对象

(三)响应式数据的读取和修改

对象类型的数据:对象.属性名 = 属性值

数组类型的数据:数组x = 元素值

注意:使用reactive函数定义的响应式数据是"深层次的",内部使用的Proxy代理

相关推荐
deli00726 分钟前
Redis 缓存穿透、击穿、雪崩:9 组流量实测数据库怎么被打穿
前端
江华森31 分钟前
5Mbps 小水管也能扛:K3s 上 k6 压测 + HPA 弹性伸缩实测
前端
shuangyueliao39 分钟前
103 个小游戏的商店素材,我一张图都没手动做:截图 / 封面 / 打包 / 提审全自动
前端
用户27639657651039 分钟前
放弃 JWT 后,我给 FastAPI 游戏服务端手撸了一套 token session
javascript
ZhengEnCi39 分钟前
前端项目为什么需要一份统一的 theme.css:用 CSS 变量管住全局样式与主题切换
前端·css·前端工程化
wordbaby1 小时前
一次微信小程序 `web-view` 跳转原生页回跳后 H5 白屏的排查与修复(Hash 路由污染)
前端
用户721880438351 小时前
密码骰子:结合AIUI在眼镜上生成一串16位密码
前端
江华森1 小时前
全链路可观测落地记:kube-prometheus-stack 在 K3s 上的 8 个坑与一整套修复脚本
前端
用户84298142418101 小时前
从 JavaScript 到可运行的字节码 - ByteJS 使用指南
javascript
deli0071 小时前
27 寸 4K 开 125% 为什么发虚?PPI 和缩放一次算清
前端