推广

vue与react的数据绑定

iseeyu2年前 (2024-02-21)推广134

实现原理就是

  1. 实现一个数据监听器Observer,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者
  2. 实现一个指令解析器Compile,对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数
  3. 实现一个Watcher,作为连接Observer和Compile的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数,从而更新视图
  4. mvvm入口函数,整合以上三者

vue3中已经将双向绑定使用Proxy重写,解决了当年vue2不能监听数组变化的苦恼,同时也提升了效率。
Proxy的劫持手段则是官宣标准——直接监听data的所有域值,免去了Object.defineProperty循环遍历才能劫持每一个属性的hack。

    //data is our source object being observedconst 
    observer = new Proxy(data, {
        get(obj, prop) { ... },
        set(obj, prop, newVal) { ... },
        deleteProperty() {
        //invoked when property from source data object is deleted
        }
    })

Proxy构造函数的第一个参数是原始数据data;第二个参数是一个叫handler的处理器对象。Handler是一系列的代理方法集合,它的作用是拦截所有发生在data数据上的操作。这里的get()和set()是最常用的两个方法,分别代理访和赋值两个操作。在Observer里,它们的作用是分别调用dep.depend()和dep.notify()实现订阅和发布。直接反映在Vue里的好处就是:我们不再需要使用Vue.$set()这类响应式操作了。除此之外,handler共有十三种劫持方式,比如deleteProperty就是用于劫持域删除。

React中的单项数据流

react中对数据的概念是:数据的流向只能通过props由外层到内层 一层一层往里传递。

对于父子组件来说,父组件总是通过 Props 向子组件传递数据。所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级prop 的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外改变父级组件的状态,从而导致你的应用的数据流向难以理解。

当然,你在平时开发的时候真的是数据一层一层的从model流到layout到业务组件的吗?
那当然肯定不是的,业务组件层级搞起来了,那还玩个锤子?所以react加了个context这个东西,方便我们组件隔代通信。

优缺点

相比于vue一个:form=”formData”,react每次表单操作都需要手动更新state的值,这样给人一种哆嗦的感觉,代码书写上 VUE win。
但这里抛出一个问题:数据每次变化时,视图都要更新吗?

单向数据流其实是没有状态的, 这使得单向绑定能够避免状态管理在复杂度上升时产生的各种问题, 程序的调试会变得相对容易。
双向绑定就显得复杂的很多,需要手动处理状态变化的逻辑, 例如子组件修改父组件,兄弟组件互相修改,使得程序复杂度上升, 难以调试, 当业务逻辑复杂时,就会无从下手。


参考: 剖析Vue原理&实现双向绑定MVVM

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://0291.com.cn/post/57475.html

相关文章

一篇文章让你了解大数据挖掘技术!

一篇文章让你了解大数据挖掘技术!

大数据如果想要产生价值,对它的处理过程无疑是非常重要的,其中大数据分析和大数据挖掘就是最重要的两部分。在前几期的科普中,小编已经为大家介绍了大数据分析的相关情况,本期小编就为大家讲解大数据挖掘技术,让大家轻轻松松弄懂什么是大数据挖掘技术。 什么是大数据挖掘? 数据挖掘(Data Min...

企业网络优化中哪些因素会影响网站抓取。

企业网络优化中哪些因素会影响网站抓取。

现在很多的企业开始做网络seo推广,现在想要通过网络优化获取好的排名,这还得利用一些排名优化策略和技巧,才能够获取搜索引擎首页的排名位置,那企业网络优化中哪些因素会影响网站抓取? 一、建立友好的链接结构 如何建立友好的链接结构,首先我们需要来认识,搜索引擎对那些东西链接比较不容...

网站外部链接与网站排名的关系。

网站外部链接与网站排名的关系。

网站建设篇 外部链接是什么?顾名思义,外部链接,也叫反向链接,就是从外部网站指向 自己网站的链接。至于查询外部链接数量可以用工具查询,也可以使用查询指令在搜索引擎查询,比如百度查询外部链接指令是 domain:,其实这个不能说是外部链接,而是相关域,即被百度抓取的页面中出现了你的网址即算一个相关域。...

2016年5月移动APP排行榜TOP 500排名!

2016年5月移动APP排行榜TOP 500排名!

2016年5月TOP500 APP榜单,新进入榜单的APP 59个,其中运动健身类APP新进入榜单的APP最多,达到5个;其次是新闻资讯、视频直播、城市出行,分别有4、4、3个应用进入TOP500。   一、运动健身领域成为新的热点 运动健身类APP在TOP500榜单中的应...

当程序员具备商业思维

有一个改变世界的 idea,就差一个程序员了,反过来想,我们就是程序员,如果我们具备了商业,距离改变世界是不是更近一步了,答案是肯定的,起初我们不需要去改变世界,先通过自己的努力赚到一块钱,都是提升商业思维的过程,那什么样的思维是商业思维?我们使用今日头条的时候每天会刷很多...

西安seo百度霸屏_百度霸屏怎么做_百度霸屏引流方法。

西安seo百度霸屏_百度霸屏怎么做_百度霸屏引流方法。

百度搜索过来的流量,一直被各行业公认为——最精准的流量!作为想在互联网上的人,不可不学习! 以我的理解:在百度搜索特定的关键词后,展现出 2 条以上的信息在首页位置,我便认为是百度霸屏 百度霸屏 5 大引流方法,人人可操作流量网络营销百度经验心得 那么是否每个关键词都可以实现百度霸屏,...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片