码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
Vue数据双向绑定的原理+响应式原理
双向绑定原理:
数据变化更新视图(model => view)
是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()或Proxy()来给各个属性添加setter,getter并劫持监听,在数据变动时发布消息给订阅者,触发相应的监听回调,也就是通知watcher重新渲染页面
视图变化更新数据(view => model) 利用事件监听(例如input、change事件等),拿到页面上输入的最新值赋值给data
响应式原理:
Vue的响应式原理
什么是响应式,也即是说,数据发生改变的时候,视图会重新渲染,匹配更新为最新的值。 Object.defineProperty
为对象中的每一个属性,设置 get 和 set 方法,每个声明的属性,都会有一个 专属的依赖收集器 subs,当页面使用到
某个属性时,触发 ObjectdefineProperty - get函数,页面的 watcher 就会被 放到 属性的依赖收集器
subs 中,在 数据变化时,通知更新; 当数据改变的时候,会触发Object.defineProperty -
set函数,数据会遍历自己的 依赖收集器 subs,逐个通知 watcher,视图开始更新;
Vue3.x响应式数据原理
Vue3.x改用Proxy替代Object.defineProperty。
因为Proxy可以直接监听对象和数组的变化,并且有多达13种拦截方法。并且作为新标准将受到浏览器厂商重点持续的性能优化。
Proxy只会代理对象的第一层,Vue3是怎样处理这个问题的呢?
判断当前Reflect.get的返回值是否为Object,如果是则再通过reactive方法做代理, 这样就实现了深度观测。
监测数组的时候可能触发多次get/set,那么如何防止触发多次呢?我们可以判断key是否为当前被代理对象target自身属性,也可以判断旧值与新值是否相等,只有满足以上两个条件之一时,才有可能执行trigger。
相关阅读:
洛谷刷题C语言:数字统计、你的飞碟在这儿、哥德巴赫猜想、数字翻转、低洼地
UE学习记录07----C++中使用事件委托
电商API接口:数据分析,代购商城建站,erp系统商品数据选品,价格监控,品牌维权,商家搬货,店铺铺货
【图像分割】图像检测(分割、特征提取)、各种特征(面积等)的测量和过滤(Matlab代码实现)
vue项目使用高德地图时报错:AMap is not defined
c++ grpc 第一个用例
SpringBoot SpringBoot 基础篇 4 基于 SpringBoot 的SSMP 整合案例 4.17 异常消息处理
php高校师生交流作业信息管理系统mysql
Android端如何实现拉取RTSP/RTMP流并回调YUV/RGB数据然后注入轻量级RTSP服务?
File类、IO分类、InputStream、OutputStream、Reader、Writer
原文地址:https://blog.csdn.net/jstljspservlet/article/details/126244385
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号