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

榆林建设银行的网站流量购买网站

榆林建设银行的网站,流量购买网站,手机注册,企业为什么要网站建设在 Vue 3 中,ref 和 reactive 是两种不同的响应式数据创建方式,它们的区别和实现方式如下: 一、核心区别 特性refreactive适用类型基本类型 对象类型仅对象类型(对象/数组/Map/Set)访问方式通过 .value 访问直接访问…

在 Vue 3 中,refreactive 是两种不同的响应式数据创建方式,它们的区别和实现方式如下:


一、核心区别

特性refreactive
适用类型基本类型 + 对象类型仅对象类型(对象/数组/Map/Set)
访问方式通过 .value 访问直接访问属性
解构响应性需要 toRefs 保持解构后的响应性直接解构会丢失响应性
深层响应性自动递归代理嵌套对象自动递归代理嵌套对象
模板自动解包支持(模板中无需 .value直接访问属性

二、实现方式

1. ref 的实现
  • 核心机制:通过一个对象包装值(RefImpl 类),利用 getter/setter + Proxy 实现响应式。

  • 源码关键点

class RefImpl<T> {private _value: Tprivate _rawValue: T // 原始值(避免对象被 reactive 二次代理)constructor(value: T) {this._rawValue = valuethis._value = isObject(value) ? reactive(value) : value}get value() {track(this, TrackOpTypes.GET, 'value') // 依赖收集return this._value}set value(newVal) {if (hasChanged(newVal, this._rawValue)) {this._rawValue = newValthis._value = isObject(newVal) ? reactive(newVal) : newValtrigger(this, TriggerOpTypes.SET, 'value') // 触发更新}}}
  • 特点

    • 对基本类型直接通过 getter/setter 监听。
    • 对对象类型内部使用 reactive 代理。
2. reactive 的实现
  • 核心机制:基于 Proxy 代理对象,拦截 get/set/deleteProperty 等操作。

  • 源码关键点

function reactive(target) {const proxy = new Proxy(target, {get(target, key, receiver) {track(target, TrackOpTypes.GET, key) // 依赖收集const res = Reflect.get(target, key, receiver)return isObject(res) ? reactive(res) : res // 递归代理嵌套对象},set(target, key, value, receiver) {const oldValue = target[key]const result = Reflect.set(target, key, value, receiver)if (hasChanged(value, oldValue)) {trigger(target, TriggerOpTypes.SET, key) // 触发更新}return result}})return proxy}
  • 特点

    • 通过 Proxy 实现深层响应式。
    • 递归代理嵌套对象(性能优化可通过 shallowReactive 避免)。

三、使用场景

1. 使用 ref 的场景
  • 需要响应式的基本类型值(如 string/number/boolean)。
  • 需要显式控制值的引用(如需要重新赋值整个对象时)。
  • 需要兼容模板自动解包(模板中无需 .value)。
2. 使用 reactive 的场景
  • 需要响应式的复杂对象或数组。
  • 需要保持对象引用不变,仅修改属性。
  • 需要深层响应式(如嵌套对象自动代理)。

四、最佳实践

  1. 优先选择 ref
    对于基本类型或需要频繁重新赋值的对象,使用 ref 更直观。

  2. 复杂对象用 reactive
    当需要处理嵌套结构且不需要重新赋值整个对象时,reactive 更简洁。

  3. 解构时用 toRefs
    解构 reactive 对象时,使用 toRefs 保持响应性:

const state = reactive({ count: 0 })const { count } = toRefs(state) // 解构后仍为 Ref 类型

五、底层原理对比

机制refreactive
依赖收集通过 getter 中的 track通过 Proxy.get 中的 track
触发更新通过 setter 中的 trigger通过 Proxy.set 中的 trigger
性能开销基本类型更低,对象类型与 reactive 相同对象类型高效,嵌套对象递归代理

总结

  • ref:更通用的响应式工具,通过 .value 访问,适合基本类型或需要重新赋值的对象。
  • reactive:专为对象设计的响应式工具,适合深层嵌套结构,直接访问属性更简洁。
  • 实现差异ref 通过 RefImpl 类包装值,reactive 通过 Proxy 代理对象。
http://www.dtcms.com/wzjs/237873.html

相关文章:

  • 电脑做微信推送的网站自己想开个网站怎么弄
  • 上线了怎么做网站个人建站
  • php做网站要用到的技术江西省水文监测中心
  • 网站 简单微营销推广软件
  • 上海做电缆桥架的公司网站深圳20网络推广
  • 最专业的网站建设seo优化服务公司热门关键词排名查询
  • 怎样做访问外国网站才能不卡广州广告推广公司
  • 怎么做网站的自然排名爱战网关键词查询网站
  • 爱站seo查询上海网站seoseodian
  • 北京直销网站开发公司分析网站推广和优化的原因
  • 自己电脑网站建设优化方案
  • 网站建设功能需求方案什么软件引流客源最快
  • 微信推送用哪个网站做怎么推广产品
  • 石家庄招聘哪个网站做的好指数
  • 小学网站建设及使用网站搜索引擎
  • 广州建站网站长春网站排名提升
  • 如何做电商网站测试seo实战密码
  • 做网站云服务器选择多大带宽微信推广方案
  • 建立网站成本免费网络推广平台有哪些
  • 怎么做网站h汉狮百度快速排名软件
  • 网站建设服务 杭州百度网站统计
  • 百度快照和做网站有关系吗互联网运营
  • app软件开发的费用设计太原关键词优化公司
  • 长春网站制作培训课程名称大全
  • 做游戏试玩网站优化推广排名网站教程
  • 网站建设线上线下双服务器怎么制作自己的个人网站
  • 中山手机网站制作多少钱网站百度权重
  • 湖北专业网站制作公司如何在网上推广自己
  • 免费做长图的网站自媒体营销的策略和方法
  • 制作网站不给源代码关键词推广操作