【Vue3】ref, reactive, shallowRef, shallowReactive, toRaw, markRaw, readonly, shallowReadonly, isRef, isReactive, isReadonly, isProxy

ref 的实现

  1. ref实现响应式(基本类型)也是采用Object.definedProperty()来实现的 getter和setter
  2. ref实现响应式(对象类型)也是采用Proxy来实现(底层调用reactive方法)

reactive 的实现

  1. reactive是采用Proxy来实现 只能对引用类型生效,如对象数组。
  2. 数组异步赋值问题会导致响应式失效,可以通过push方法改变数据。或者将数组包裹在对象中。

ref 和 reactive 的区别

  1. ref 支持所有类型,reactive只支持引用类型。
  2. ref 取值都需要加.value(模板里是不需要加.value的) , 而reactive不需要加。

ref 和 shallowRef 的区别(shallowReactive同理)

  1. ref是深层次的响应式。
  2. shallowRef是浅层次的响应式(只有第一层数据是响应式),只能监听到.value就结束了。或者手动调用triggerRef()触发视图更新
  3. ref和shallowref不能一起写 不然会造成shallowref的更新(因为triggerRef()方法的影响)

ref 和 Ref 的区别

  1. Ref是TS对应的接口,申明类型的时候使用。

toRaw 和 markRaw

  1. toRaw会脱去Proxy的外衣,使其失去响应式
  2. 给响应式对象添加新属性,markRaw可以给响应式对象添加非响应式的新属性

readonly 和 shallowReadonly

  1. readonly所有层级的属性都不允许修改
  2. shallowReadonly只有第一层级的属性不允许修改

判断响应式数据

  1. isRef, isReactive, isReadonly, isProxy
posted @   wanglei1900  阅读(333)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示