vue与react中diff算法的区别?react的渲染机制
1.面试被问到react与vue中diff算法的区别,请大神赐教
2.在网上查到了vue与react虚拟dom的区别是:
网上答案:virtual DOM不一样,vue会跟踪每一个组件的依赖关系, 不需要重新渲染整个组件树.
而对于React而言,每当应用的状态被改变时,全部组件都会重新渲染,所以react中会需要shouldComponentUpdate这个生命周期函数方法来进行控制。
上述是网站一些普遍的答案但是之前看过一个面试题是 使用了setstate发生了什么?
网上答案:在代码中调用setState函数之后,React 会将传入的参数对象与组件当前的状态合并,然后触发所谓的调和过程(Reconciliation)。 经过调和过程,React 会以相对高效的方式根据新的状态构建 React 元素树并且着手重新渲染整个UI界面。 在 React 得到元素树之后,React 会自动计算出新的树与老树的节点差异,然后根据差异对界面进行最小化重渲染。 在差异计算算法中,React 能够相对精确地知道哪些位置发生了改变以及应该如何改变,这就保证了按需更新,而不是全部重新渲染
怎么一个是全部组件重新渲染,一个不是全部重新渲染,这不是矛盾了吗?
#面经##前端##春招#
2.在网上查到了vue与react虚拟dom的区别是:
网上答案:virtual DOM不一样,vue会跟踪每一个组件的依赖关系, 不需要重新渲染整个组件树.
而对于React而言,每当应用的状态被改变时,全部组件都会重新渲染,所以react中会需要shouldComponentUpdate这个生命周期函数方法来进行控制。
上述是网站一些普遍的答案但是之前看过一个面试题是 使用了setstate发生了什么?
网上答案:在代码中调用setState函数之后,React 会将传入的参数对象与组件当前的状态合并,然后触发所谓的调和过程(Reconciliation)。 经过调和过程,React 会以相对高效的方式根据新的状态构建 React 元素树并且着手重新渲染整个UI界面。 在 React 得到元素树之后,React 会自动计算出新的树与老树的节点差异,然后根据差异对界面进行最小化重渲染。 在差异计算算法中,React 能够相对精确地知道哪些位置发生了改变以及应该如何改变,这就保证了按需更新,而不是全部重新渲染
怎么一个是全部组件重新渲染,一个不是全部重新渲染,这不是矛盾了吗?
#面经##前端##春招#