推广

vue与react的数据绑定

iseeyu3年前 (2024-02-21)推广143

实现原理就是

  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

相关文章

什麽叫做导航类关键词?

什麽叫做导航类关键词?

什麽叫做导航类关键词?导航类关健词属于一个特定品牌或者网站的总称.如’.新浪、搜孤等的导航类关健词,这类关键词的竞争异常激烈.中小型站长很难做上去。搜索导航类关键词的用户知道有这个网站存在.只不过暂时记不清具体网址是多少了。 导航型关键词不只局限于某个网站特定品牌名称,还可以是某个産品的具体名称....

2023年投资干点什么能赚钱呢?这几个项目值得一试

2023年投资干点什么能赚钱呢?这几个项目值得一试

自2020年疫情发生后,我国业、餐饮店等实体店受极大影响,多数已经纷纷倒闭了,为此投资大家变得十分谨慎,那2023年投资干点什么能赚钱呢?这几个项目值得一试!项目一:现在人们水平提高了,几乎每家都有小汽车了,而现在的汽车美容已满足不了人们的需求,因此可开一家漆面美容、内饰美...

汇丰私人财富规划体验分享,纠结中的朋友看一下

汇丰私人财富规划体验分享,纠结中的朋友看一下

其实每个银行都是有理财的,但是并不是每个银行都能做私人财富规划,汇丰的私人财富规划是汇丰在银行业务之外的一个新业务。因为是在中国首发,所以整个汇丰都很重视这个,每一环服务体验下来都蛮周到。我是听朋友提到的汇丰私人财富规划的,有点心动,就答应参加下他们的活动去了解了解。活动在...

淘宝店群模式还能做多久,淘宝店怎么铺货(天猫店群还能做多久)

淘宝店群模式还能做多久,淘宝店怎么铺货(天猫店群还能做多久)

淘宝开店是有一定难度的,想要在竞争激烈的淘宝平台生存下去,要么提高店铺的质量,要么以店铺的数量取胜。一种考验的是运营的技术,第二种就是所谓的淘宝店群的玩法...

网站收录、排名、权重、转化率都是搜索引擎优化师比较关心的问题。

网站收录、排名、权重、转化率都是搜索引擎优化师比较关心的问题。

1、点击率最高的页面 在一定时期内,点击率较高的页面直接反映了近期网站流量的构成。无论它是否符合网站的预期目标,您可能需要检查网站流量统计:如果它来自具有更多来源的旧页面,您需要进行审查: (1)新页面排名:上下排名浮动 (2)新页面的标题书写:是否符合SEO和新媒体标题的要求,包括关键词,也...

网络推广团队分享新手必看的长尾关键词挖掘技巧(长尾关键词挖掘网站)

网络推广团队分享新手必看的长尾关键词挖掘技巧(长尾关键词挖掘网站)

在网络推广团队的网站优化中,选对关键词确实能帮助网站排名有更好的提升和帮助,但在选择好主关键词后,并取得一定的成绩后,就需要考虑长尾词来帮助网站夯实实力,拓展带来更多的流量,但有些优化新手们还不太了解,下面网络推广团队就带大家一起来了解。 1、利用搜索引擎下拉框 围绕关键词展开的一些比关键词...

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

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