react和vue响应式数据的区别,对数据管理和界面渲染的流程解析

vue:

通过defineProperty或proxy对数据进行劫持,数据变化调用render函数,template模板默认会转成render函数,render函数里又通过h函数的调用。

react:

没有数据劫持,那react怎么知道数据发生更新呢?通过调用setState,render函数重新执行,来更新state中的数据,然后重新渲染页面。

渲染流程:

render函数 -> jsx -> 虚拟dom -> 真实dom

更新流程:

props/state发生改变 -> render函数重新执行 -> 产生新的dom树 -> 新旧dom数进行diff -> 计算出差异进行更新 -> 更新到真实的dom

setState:

为什么是异步的?为了提高性能,如果每一次调用setState 意味着render函数都会被执行,重新渲染新的dom,进行diff算法,效率低。最好的办法是获取多个更新,批量更新,把每一个setState都放进一个队列里,等到真正更新时,合并每一个setState,进行一次render函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值