我了解更改检测如何在 Angular 5.0 中运行。
是否有人可以帮助我了解 React 中的相同功能以及它与 Angular的有多大差异?
答案 0 :(得分:12)
React和Angular的变化检测是不同的,但它们有一个非常重要的共同点 - 从内存(而不是DOM)制作当前和先前状态的差异,并仅渲染已更改的内容。
在Angular中,在高级别上它的工作原理如下:
注意:请注意,如果您使用ChangeDetectionStrategy.OnPush,某些组件及其后代 在树遍历期间可能会被省略。它可以是很好的优化。
在React中它看起来像这样:
setState
的组件开始。注意:与Angular的ChangeDetectionStrategy.OnPush类似,在React中我们有类React.PureComponent。我们可以使用这个类来避免不必要的变化检测。
当然还有很多差异,但在高层次上,我认为这些是最重要的。
答案 1 :(得分:2)
反应变化检测与Angular大致相同,除了三件事:
1)何时开始:每当调用组件的setState方法时,diffing就会开始(而无论何时触发Dom事件,每当运行setInterval / setTimeout回调时,Angular都会进行差异化,并且每当运行ajax回调)
2)从哪里开始:差异从已调用setState的组件开始,然后是子组件,并从层次结构开始(而Angular从最顶层组件开始)
3)要比较的内容:差异将状态更改后的当前HTML的虚拟DOM与虚拟DOM进行比较。 (而Angular使用模板中使用的数据绑定值,用于比较之前和之后)