码农知识堂 - 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。
  • 相关阅读:
    L40.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- useradd和usermod
    YGG 和 BlockchainSpace 举办全国最大的 Web3 活动:Philippine Web3 Festival
    GBase 8a压缩算法介绍
    mysql牛客网大厂面试刷题深度解析篇,每日一更(持续更新)
    全国大学生数学建模A题目更新中…… 欢迎订阅
    通过插件去除Kotlin混淆去除 @Metadata标记
    codeforces每日5题(均1600)-第二十八天
    SpringBoot实现扫码登录
    [物联网] OneNet 多协议TCP透传
    区别:秒s、毫秒ms、微秒μs、纳秒ns、皮秒ps、飞秒fs每两级之间的换算以及之间的关系
  • 原文地址: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号