小编在网上查了大量文章,得出一个结论,react中数据发生变化(调用setstate时),render函数就会执行,重新生成一个新的虚拟dom,这个虚拟dom和旧的虚拟dom做比较,得出差异然后渲染。
而vue组件中数据发生变化,由于数据变化会触发setter,由于vue组件中数据的getter的作用,收集了依赖,setter触发会根据这些依赖,生成新的虚拟dom,然后对比新旧虚拟dom进行渲染。
比较疑惑的是两种渲染看起来好似没什么差别,总感觉我描述的两个流程有问题,没有体现出差异,万望解惑,小编看好多大厂面试题都会提出这个问题,而网上大部分文章感觉总是读的一头雾水。。。
探索Virtual DOM的前世今生
上面没有说具体实现的不同,细节可以看一下这个回答:
https://www.zhihu.com/questio...
react
函数式组件思想 当你setstate
就会遍历diff
当前组件所有的子节点子组件, 这种方式开销是很大的, 所以react 16
采用了fiber
链表代替之前的树,可以中断的,分片的在浏览器空闲时候执行vue
组件响应式思想 采用代理监听数据,我在某个组件里修改数据,就会明确知道那个组件产生了变化,只用diff
这个组件就可以了