当前位置:首页 > VUE

ref实现原理vue

2026-02-19 02:21:20VUE

ref 的实现原理(Vue 3)

Vue 3 中的 ref 是一个响应式 API,用于将一个基本类型或对象转换为响应式引用。其核心原理基于 JavaScript 的 Proxygetter/setter 机制。

基本类型处理
当使用 ref 包装基本类型(如数字、字符串)时,ref 会创建一个包含 value 属性的响应式对象。例如:

ref实现原理vue

const count = ref(0);

内部实现会通过 gettersetter 拦截对 value 的访问和修改,触发依赖收集和更新通知。

对象类型处理
如果传入的是对象,ref 会调用 reactive 方法对对象进行深层响应式转换,但仍通过 value 属性访问:

ref实现原理vue

const obj = ref({ foo: 1 });
obj.value.foo = 2; // 触发响应式更新

依赖收集与触发更新

ref 通过以下机制实现响应式:

  1. 依赖收集:在读取 value 时(如模板或计算属性中使用),触发 getter 并记录当前依赖(如组件的渲染函数)。
  2. 触发更新:修改 value 时,触发 setter 通知所有依赖进行重新执行(如重新渲染组件)。

reactive 的区别

  • ref 通过 .value 访问数据,适合包装基本类型或需要直接替换整个对象的情况。
  • reactive 直接返回响应式代理对象,适用于复杂对象的嵌套响应式转换,无需 .value 语法。

源码简析

Vue 3 的 ref 实现简化逻辑如下:

function ref(value) {
  return {
    get value() {
      track(this, 'value'); // 依赖收集
      return value;
    },
    set value(newVal) {
      value = newVal;
      trigger(this, 'value'); // 触发更新
    }
  };
}

使用场景

  • 基本类型数据(如数字、字符串)的响应式管理。
  • 需要显式控制引用替换的场景(如动态组件、DOM 引用)。
  • 组合式函数中返回响应式状态时。

标签: 原理ref
分享给朋友:

相关文章

eventbus实现原理vue

eventbus实现原理vue

EventBus 实现原理 EventBus 在 Vue 中通常用于跨组件通信,其核心原理基于发布-订阅模式。通过一个中央事件总线,组件可以订阅事件或触发事件,实现非父子组件间的通信。 核心机制 E…

vue的原理实现

vue的原理实现

Vue 的核心原理实现 Vue.js 的核心原理主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键实现细节: 响应式系统 Vue 2.x 使用 Object.defineProper…

Vue实现原理详解

Vue实现原理详解

Vue 实现原理核心解析 Vue.js 的核心实现基于响应式系统、虚拟 DOM 和组件化设计。以下是关键原理的分解: 响应式系统 通过 Object.defineProperty(Vue 2)或 P…

vue技术实现原理

vue技术实现原理

Vue 技术实现原理 Vue.js 是一个渐进式 JavaScript 框架,其核心实现原理主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。 响应式系统 Vue 的响应式系统基于 Objec…

vue权限实现原理

vue权限实现原理

Vue权限实现原理 Vue权限控制的核心在于动态路由和组件级权限校验,通常结合后端返回的权限数据实现。以下是常见的实现方式: 路由级权限控制 路由级权限通过动态生成可访问路由表实现。用户登录后获取权…

vue keepalive实现原理

vue keepalive实现原理

Vue KeepAlive 实现原理 Vue 的 KeepAlive 组件通过缓存组件实例来避免重复渲染,提升性能。以下是其核心实现原理: 缓存机制 KeepAlive 组件内部维护一个缓存对象 c…