推广

vue与react的数据绑定

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

实现原理就是

  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://www.0291.com.cn/post/57475.html

相关文章

文章标题竞争度、关键词堆砌都会导致网站搜索不到全标题。

文章标题竞争度、关键词堆砌都会导致网站搜索不到全标题。

定期检查网站关键词的排名对于每个SEO工作者来说都是很常见的事情。偶尔,我们也会遇到这样一种情况:在某一特定时期,我们发现搜索站点首页的完整标题,没有结果,及时有的结果也排在600之后。 如果处理不当,可能导致网站的任何页面都无法进行标题搜索。 针对搜索标题问题的原因可以讨论如下: 1、标题竞...

拒绝千篇一律!企业官网设计升级的超全实施手册。

拒绝千篇一律!企业官网设计升级的超全实施手册。

官网作为连接产品/企业与用户的第一道门,给到用户的第一印象至关重要。官网就像一个会自述的虚拟人物,我们通过视觉设计赋予它形象,它用符合人设性格的话术,向用户介绍产品/企业。怎样的形象、表述能获取用户好感及信赖,从而建立长期合作关系呢? 我们先看下不同公司的云产品官网设计: 这...

超级推荐自定义和爆款拉新的区别(超级推荐自定义还是爆款拉新)

超级推荐自定义和爆款拉新的区别(超级推荐自定义还是爆款拉新)

爆品拉新是属于系统软件自有的智能化引流方案,可以根据产品的情况,为产品更好地精准推送新顾客,这种智能化的系统只需要控制好推广的预算,然后系统会自己收集经验,不断总结和优化。...

淘宝客服转化率多少正常(淘宝客服转换率什么意思)

淘宝客服转化率多少正常(淘宝客服转换率什么意思)

转化率体现在店铺客户体验的各个方面,你所说的客服转化率只是在客户体验中占了一个很小的比例,并不能依次来评判客服的优劣。这就得看你卖的什么产品了,每个产品要求的转化率都是不一样的。...

内心强大心法:强者自渡,真正内心强大的人掌握了四种强者思维

文/唐若唐若心学原创作品,违者必究在中,你会发现,区分一个人是否强大与他内在的方式息息相关,一个真正强大的人,大都拥有五种强者思维。强者思维决定了我们的持续成长,更决定了我们面对困境的态度,当我们想要拥有更为强大的内心,最重要是培养自己内在的思维方式方法。第一个:拥有信念和...

如何做网站seo优化排名推广。

如何做网站seo优化排名推广。

在当前网站推广排名优化行业越来越多,传统企业转型做关键词优化排名的数量也越来越多,目前,网络营销已经逐渐取代传统营销,成为企业营销发展中一种重要的营销推广模式,那么如何做推广排名呢? 1、 不断优化网站内部链接 在网站建设初期,已经建立了网站的地图结构。但是,随着网站内容的不断更新,需...

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

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