在https://hackernoon.com/everything-you-need-to-know-about-change-detection-in-angular-8006c51d206f
中他说angular有14个操作,但确切的时刻检查组件是否为ChecksEnabled == false(OnPush),特别是如果它在OnPush检查某些@Input属性的时候改为在里面运行进程吗?继续检查DOM并调用所需的生命周期?
如果该值是新引用,它将仅对@Input的值的属性或绑定中的所有属性运行检查?同意我,如果他只是检查该元素的值绑定会更具性能吗?
答案 0 :(得分:1)
在哪个时刻检查组件是否为ChecksEnabled == false(OnPush)
当Angular运行检查子视图时会发生这种情况:
以下是相关代码:
function callViewAction(view: ViewData, action: ViewAction) {
const viewState = view.state;
switch (action) {
...
case ViewAction.CheckAndUpdate:
if ((viewState & ViewState.Destroyed) === 0) {
if ((viewState & ViewState.CatDetectChanges) === ViewState.CatDetectChanges) {
checkAndUpdateView(view);
} else if (viewState & ViewState.CheckProjectedViews) {
execProjectedViewsAction(view, ViewAction.CheckAndUpdateProjectedViews);
}
}
break;
它在什么时候检查某些@Input属性已更改为运行 里面的过程
这是为此步骤执行的:
要了解详情,请阅读The mechanics of property bindings update in Angular
继续检查DOM并调用所需的生命 周期?
这将在以下时间完成: