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

vue源码笔记之——响应系统

vue是一种声明式范式编程,使用vue者只需要告诉其想要什么结果,无需关心具体实现(vue内部做了,底层是利用命令式范式)

1. reactive为什么只能操作对象,对于基本数据类型,需要用ref?

因为vue3存储以来的对象用的是weakMap,其键必须为对象。源码位置如下。targetMap存放的是所有的依赖在这里插入图片描述

2. 是怎么存放依赖?

主要用了一个targetMap,结构为:

{ // weakMap key: '', //需要代理的对象value:  // map,存放对应属性{	key: '', // 属性值value: [] // 依赖关系}
}
// 这段代码会生成以下图片的一个对象
const obj = reactive({name: 'zqw',sex: 'girl'
})
effect(() => {document.querySelector('#p1').innerText = obj.name
})
effect(() => {document.querySelector('#p2').innerText = obj.name
})

在这里插入图片描述

3.访问ref的数据为什么必须.value
http://www.lryc.cn/news/197002.html

相关文章:

  • Android Studio Giraffe | 2022.3.1
  • Spring Boot 3.0 已经就绪,您准备好了么?
  • 5+非肿瘤分析,分型+WGCNA+机器学习筛选相关基因
  • 算法课作业2 OJ for Divide and Conquer
  • 申请全国400电话的步骤及注意事项
  • C++ 的设计模式之 工厂方法加单例
  • Deploy、Service与Ingress
  • 定制化推送+精细化运营,Mobpush助力《迷你世界》用户留存率提升23%
  • 深度学习零基础教程
  • 简单测试一下 展锐的 UDX710 性能
  • 一百九十、Hive——Hive刷新分区MSCK REPAIR TABLE
  • 智慧公厕:探索未来城市环境卫生设施建设新标杆
  • 高压放大器在无线电能中应用有哪些
  • 若依集成MybatisPlus
  • List小练习,实现添加图书,并且有序遍历
  • 代码随想录二刷 Day42
  • 【Android】Drawable 和src 的区别和理解
  • Linux网络-UDP/TCP协议详解
  • C语言从入门到高级
  • 【MultiOTP】在Linux上使用MultiOTP进行SSH登录
  • 性能超越 Clickhouse | 物联网场景中的毫秒级查询案例
  • 05、SpringBoot 集成 RocketMQ
  • PR2023中如何导入字幕
  • 读书笔记--华为数据之道有感
  • 汽车数据安全事件频发,用户如何保护隐私信息?
  • Redis主从复制流程
  • 微信公众号如何变更为订阅号?
  • 竞赛选题 深度学习YOLO抽烟行为检测 - python opencv
  • mysql利用mysqldump方式搭建主从
  • 如何保护IP在线隐私,提高网络安全?