ToB企服应用市场:ToB评测及商务社交产业平台

标题: Vue3相应式原理 [打印本页]

作者: 铁佛    时间: 2024-11-24 17:42
标题: Vue3相应式原理
Vue 3 的相应式体系基于 Proxy 对象实现,具有更高的性能和灵活性,相比 Vue 2 使用的 Object.defineProperty 有明显的改进。以下是 Vue 3 相应式原理的关键部分:

1. 焦点机制

Vue 3 相应式体系的焦点是 reactive API,它使用 Proxy 拦截对对象的访问和修改,从而实现数据的追踪和更新。
1.1 reactive 的实现

  1. import { reactive } from 'vue';
  2. const state = reactive({
  3.   count: 0,
  4.   info: {
  5.     name: 'Vue',
  6.     version: 3
  7.   }
  8. });
复制代码
在上述代码中:


1.2 依赖网络与追踪

相应式体系的工作过程可以分为以下几步:
依赖网络是通过 Effect 函数 实现的:
  1. import { effect } from 'vue';
  2. effect(() => {
  3.   console.log(state.count);
  4. });
复制代码
在执行 effect 时,Vue 会自动订阅 state.count,因此当 state.count 的值发生变革时,该 effect 会重新运行。

2. Proxy 的焦点拦截点

Vue 3 的相应式体系通过 Proxy 提供的拦截机制,完成以下利用:
2.1 get:读取属性

当访问对象的属性时,Vue 会触发 get 拦截器,从而完成依赖网络:
  1. const handler = {
  2.   get(target, key, receiver) {
  3.     const result = Reflect.get(target, key, receiver);
  4.     console.log(`读取属性 ${key}: ${result}`);
  5.     return result;
  6.   }
  7. };
复制代码
2.2 set:修改属性

当修改对象的属性时,Vue 会触发 set 拦截器,从而关照依赖更新:
  1. const handler = {
  2.   set(target, key, value, receiver) {
  3.     const result = Reflect.set(target, key, value, receiver);
  4.     console.log(`设置属性 ${key}: ${value}`);
  5.     // 触发依赖更新
  6.     return result;
  7.   }
  8. };
复制代码
2.3 track 和 trigger

Vue 3 将依赖追踪和触发分成了两个步骤:


3. 相应式工具

Vue 3 提供了一些内置工具和方法,资助开发者处理相应式对象。
3.1 reactive 和 ref


  1. import { ref } from 'vue';
  2. const count = ref(0);
  3. effect(() => {
  4.   console.log(count.value); // 监听 count 的变化
  5. });
  6. count.value++; // 触发更新
复制代码
3.2 computed


  1. import { computed } from 'vue';
  2. const doubled = computed(() => count.value * 2);
  3. console.log(doubled.value); // 自动计算并缓存结果
复制代码

4. 与 Vue 2 的对比

特性Vue 2 (Object.defineProperty)Vue 3 (Proxy)支持的数据类型仅支持对象和数组支持对象、数组、Map、Set 等多种类型深度相应式初始化时递归遍历对象按需追踪,性能更优新增/删除属性相应式需要 Vue.set 或 Vue.delete原生支持性能初始化开销较大,动态追踪效率低初始化开销小,动态追踪效率高
5. 总结

Vue 3 的相应式体系使用 Proxy 和优化的依赖追踪机制(track、trigger),实现了:

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4