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

国内最专业的设计网站建设济南网约车公司

国内最专业的设计网站建设,济南网约车公司,wordpress获取自定义文章列表,好看logo图片一、什么是响应式? 想象一个 Excel 表格:当单元格 A1 的值变化时,依赖 A1 的公式(如 SUM(A1, B1))会自动重新计算。Vue3 的响应式系统正是实现了这种“自动更新”的能力——当数据变化时,依赖它的视图或计…

一、什么是响应式?

想象一个 Excel 表格:当单元格 A1 的值变化时,依赖 A1 的公式(如 SUM(A1, B1))会自动重新计算。Vue3 的响应式系统正是实现了这种“自动更新”的能力——当数据变化时,依赖它的视图或计算属性会自动更新。


二、Vue3 响应式的核心实现

1. 底层工具:Proxy 与 Reflect

Vue3 使用 Proxy 代替 Vue2 的 Object.defineProperty,因为它能拦截对象的所有操作(如属性读取、新增、删除等),而无需预先定义属性149。

const obj = { a: 1 };
const proxy = new Proxy(obj, {get(target, key) {console.log('读取属性:', key);return Reflect.get(target, key); // 使用 Reflect 保证 this 指向正确},set(target, key, value) {console.log('设置属性:', key, value);return Reflect.set(target, key, value);}
});

2. 响应式对象:reactive()

reactive() 函数将普通对象转为响应式对象,内部通过 Proxy 实现:

function reactive(target) {return new Proxy(target, {get(target, key) {track(target, key); // 收集依赖const res = Reflect.get(target, key);// 递归处理嵌套对象return isObject(res) ? reactive(res) : res;},set(target, key, value) {Reflect.set(target, key, value);trigger(target, key); // 触发更新return true;}});
}

关键点

  • 深层响应:嵌套对象会被递归代理1。

  • 避免重复代理:通过 WeakMap 缓存已代理对象10。


3. 副作用函数:effect()

副作用函数(如渲染函数)会在依赖的响应式数据变化时重新执行:

let activeEffect;
function effect(fn) {const _effect = () => {activeEffect = _effect; // 标记当前正在执行的副作用函数fn();activeEffect = null;};_effect(); // 立即执行一次以收集依赖
}// 示例
effect(() => {console.log('数据变化了:', state.a);
});

4. 依赖收集与触发更新

(1) 数据结构
  • targetMapWeakMap,键为响应式对象,值为 depsMap

  • depsMapMap,键为对象的属性名,值为 dep(依赖集合)。

  • depSet,存储所有依赖该属性的副作用函数210。

(2) track():收集依赖

在读取属性时,将当前副作用函数加入依赖集合:

const targetMap = new WeakMap();
function track(target, key) {if (!activeEffect) return;let depsMap = targetMap.get(target);if (!depsMap) targetMap.set(target, (depsMap = new Map()));let dep = depsMap.get(key);if (!dep) depsMap.set(key, (dep = new Set()));dep.add(activeEffect);
}
(3) trigger():触发更新

在设置属性时,执行所有依赖该属性的副作用函数:

function trigger(target, key) {const depsMap = targetMap.get(target);if (!depsMap) return;const dep = depsMap.get(key);dep && dep.forEach(effect => effect());
}

三、Vue3 对比 Vue2 的优势49

特性Vue2 (Object.defineProperty)Vue3 (Proxy)
检测新增属性需手动调用 Vue.set()自动支持
数组索引修改需重写数组方法直接通过下标修改即可
嵌套对象处理需递归初始化按需代理(惰性处理)
性能初始化时递归遍历所有属性动态代理,按需收集依赖

四、实战示例

1. 基础响应式

const state = reactive({ count: 0 });
effect(() => {console.log('count 值变为:', state.count);
});
state.count++; // 触发控制台输出

2. 嵌套对象

const obj = reactive({ foo: { bar: 1 } 
});
effect(() => {console.log(obj.foo.bar); // 深层属性仍可响应
});
obj.foo.bar = 2; // 触发更新

五、总结

Vue3 的响应式系统通过 Proxy 拦截对象操作,结合 依赖收集(track) 与 触发更新(trigger) 实现了高效的数据绑定。相比 Vue2,它解决了动态属性、数组操作等痛点,且性能更优。理解其核心原理有助于更好地使用 Vue3 开发复杂应用。

想深入学习可参考:Vue3 响应式官方文档


文章转载自:

http://UVKYpVcd.smggx.cn
http://oxdu06sf.smggx.cn
http://BghR63bD.smggx.cn
http://2djuo4QX.smggx.cn
http://K9vEFH9u.smggx.cn
http://PeG6PZyH.smggx.cn
http://OSmqRUbv.smggx.cn
http://z6wyXHvv.smggx.cn
http://q5STSH44.smggx.cn
http://Y6byn5SG.smggx.cn
http://ychYZcar.smggx.cn
http://0OhgQLSu.smggx.cn
http://AqmiCZI5.smggx.cn
http://H3vS7xfn.smggx.cn
http://eLC9rMja.smggx.cn
http://uiTtgElN.smggx.cn
http://oER9Mbf5.smggx.cn
http://NWcIqVMZ.smggx.cn
http://Xd2UOkMT.smggx.cn
http://uuCScFzS.smggx.cn
http://jB7UG4Zn.smggx.cn
http://Zm8DRdrR.smggx.cn
http://QYm0SGFz.smggx.cn
http://UE7AyDsF.smggx.cn
http://czBhZqCT.smggx.cn
http://NmCG1qcN.smggx.cn
http://6x0Leyao.smggx.cn
http://YjTzAVdw.smggx.cn
http://vZ5iiFlY.smggx.cn
http://wlO0OhSl.smggx.cn
http://www.dtcms.com/wzjs/738810.html

相关文章:

  • 青岛网站建设公司有哪些建外贸商城网站
  • 要如何自己创建一个网站潞电建设公司官网
  • 网站开发与微信对接邵武建设局网站
  • php 手机网站开发中国上海官网
  • iis7.5 没有默认网站学生制作网站建设 维护
  • 网站制作 企业网站建设哪家好如何做网站帮别人赚钱
  • 中国空间站进展php是专门做网站的
  • 即墨建设局网站大连seo优化
  • 上海做网站比较好的公司有哪些菏泽建设公司网站
  • 手机商城网站模板个人建设网站难吗
  • 网站怎么做图片放映效果成都程序员培训机构
  • 郑州市做网站的公司建网站的流程及注意事项
  • 舟山网站建设费用维护一个网站难吗
  • 聊城招聘网站建设优秀的手机网站
  • 公司网站 百度成都建设网站那个好
  • 大型电子商务网站建设公司宁夏免费建个人网站
  • 怎么提升网站排名广东深圳最近出什么事了
  • 高唐做创建网站的公司做网站傻瓜软件
  • 手机搞笑网站模板下载安装gateface做网站
  • 做一个网站后期维护需要做什么网页游戏平台系统
  • 做暖暖在线获取网站东莞市微客巴巴做网站
  • 上海高端网站开发公司商家联盟会员管理系统
  • 网站备案号示例小程序哪家公司做的好
  • 西樵网站建设公司wordpress更改后台
  • 天目西路网站建设网站备案收录下降
  • 给文字做网站链接wordpress有识图接口吗
  • 天津高端网站建设制作网站开发基本流程ppt
  • 宁波做网站的哪个好wordpress style.
  • 门户网站建设的必要性行业商城网站建设多少钱
  • 中山市 有限公司网站建设谷歌seo是做什么的