码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Vue2和Vue3响应式原理对比


    Vue2响应式原理的实现主要是依靠Object.definePropety()

    Vue3的响应式原理的实现主要是依靠proxy和Reflect

    Vue2:

    通过Object.definePropety()的getter和setter方法,对数据进行响应式处理,但仅限于查询和修改,而增加和删除还是需要额外进行相关的处理。需要使用

    this.$set()  或者Vue.set()

    Vue3:

    在window身上有一个proxy(代理)属性

    vue3的实现大概如下

    const p =new proxy(源对象,{在这里包含着getter setter 还有deleteProprty  })

    它可以捕获到数据的增删改查,此时只是捕获了,但是没有对页面数据进行响应式处理。

    此时要引入新的东西——Reflect(反射)

    Object身上的东西已经逐渐转移到了Reflect身上,而Reflect更好,

    例如使用Object.definePropety()

    定义一个响应式属性,如果重复定义了会报错,代码量多的时候,我们只能通过try...catch捕获异常,像封装框架类的东西,不太适合使用Object.

    使用Reflect.definePropety()

    如果重复定义了,后台并不会报错,其实本身Reflect.definePropety()是有返回值的,返回的是布尔值。

    总结:

    通过proxy(代理):拦截对象中任意属性的变化,包括属性值的读(getter)、添加和修改(setter)、                               删除(deletePropety)

    通过Reflect(反射):对源对象的属性进行操作

    reactive 通过使用Proxy来实现响应式(数据劫持),并通过Reflect操作源对象内部的数据。



    在vue3中,定义一个对象,并有响应式数据,都是要通过reactive函数,例如:

    setup(){
       let p=reactive({

            name:'xxx',

            age:'xxx'

            })

       function fun(){

            console.log(p)        //p就是proxy,此时我们就可以联想到上面的原理了

            }

    }

  • 相关阅读:
    前端项目:基于Nodejs+vue开发实现酒店管理系统
    Linux 命令个人学习笔记
    分析:如何多线程运行测试用例
    Android屏幕录制
    Tomcat:servlet与servlet容器
    java计算机毕业设计ssm+vue红联小区果蔬销售网站-水果购物商城
    TSINGSEE智能分析网关简介及说明
    go语言基于Gin集成后台管理系统开发定时任务管理cron/v3好用又好看
    worthington细胞分离技术方法之如何使用酶?
    MemArts :高效解决存算分离架构中数据访问的组件
  • 原文地址:https://blog.csdn.net/guhanfengdu/article/details/127043488
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号