为了账号安全,请及时绑定邮箱和手机立即绑定

vue虚拟dom和react虚拟dom有什么不同?

/ 猿问

vue虚拟dom和react虚拟dom有什么不同?

白衣染霜花 2019-03-15 18:55:32

小编在网上查了大量文章,得出一个结论,react中数据发生变化(调用setstate时),render函数就会执行,重新生成一个新的虚拟dom,这个虚拟dom和旧的虚拟dom做比较,得出差异然后渲染。

而vue组件中数据发生变化,由于数据变化会触发setter,由于vue组件中数据的getter的作用,收集了依赖,setter触发会根据这些依赖,生成新的虚拟dom,然后对比新旧虚拟dom进行渲染。

比较疑惑的是两种渲染看起来好似没什么差别,总感觉我描述的两个流程有问题,没有体现出差异,万望解惑,小编看好多大厂面试题都会提出这个问题,而网上大部分文章感觉总是读的一头雾水。。。


查看完整描述

2 回答

?
吃鸡游戏

探索Virtual DOM的前世今生
上面没有说具体实现的不同,细节可以看一下这个回答:
https://www.zhihu.com/questio...

react 函数式组件思想 当你 setstate 就会遍历 diff 当前组件所有的子节点子组件, 这种方式开销是很大的, 所以 react 16 采用了 fiber 链表代替之前的树,可以中断的,分片的在浏览器空闲时候执行

vue 组件响应式思想 采用代理监听数据,我在某个组件里修改数据,就会明确知道那个组件产生了变化,只用 diff 这个组件就可以了


查看完整回答
反对 回复 2019-03-15
?
www说

react和vue的虚拟dom都是一样的, 都是用JS对象来模拟真实DOM,然后用虚拟DOM的diff来最小化更新真实DOM。

除了极个别实现外,两者前半部分(用JS对象来模拟真实DOM)几乎是一样的。

而对于后半部分(用虚拟DOM的diff来最小化更新真实DOM)两者算法也是类似的,包括replace delete insert等

虽然两者对于dom的更新策略不太一样, react采用自顶向下的全量diff,vue是局部订阅的模式。 但是这其实和虚拟dom并无关系


查看完整回答
反对 回复 2019-03-15

添加回答

回复

举报

0/150
提交
取消
意见反馈 去赚学费 帮助中心 APP下载
官方微信