码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Vue数据双向绑定的原理+响应式原理


    双向绑定原理:

    1. 数据变化更新视图(model => view)
      是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()或Proxy()来给各个属性添加setter,getter并劫持监听,在数据变动时发布消息给订阅者,触发相应的监听回调,也就是通知watcher重新渲染页面
    2. 视图变化更新数据(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号