Вопрос проверяет понимание механизма обнаружения изменений в Angular и оптимизации производительности с помощью стратегии OnPush.
Angular использует механизм обнаружения изменений (Change Detection) для синхронизации модели данных с представлением. По умолчанию используется стратегия Default, при которой Angular проверяет все компоненты в дереве при любом изменении данных. Стратегия OnPush (ChangeDetectionStrategy.OnPush) оптимизирует этот процесс, ограничивая проверку только теми компонентами, где действительно могли произойти изменения.
import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
@Component({
selector: 'app-user',
template: `<p>{{ user.name }}</p>`,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class UserComponent {
@Input() user: { name: string };
updateName() {
// Неправильно: мутация объекта не вызовет проверку
// this.user.name = 'New Name';
// Правильно: создаем новый объект
this.user = { ...this.user, name: 'New Name' };
}
}Стратегия OnPush рекомендуется для компонентов, которые получают данные через @Input и не зависят от глобального состояния. Она особенно полезна в крупных приложениях для повышения производительности за счет сокращения количества проверок изменений. Используйте иммутабельные данные и AsyncPipe для максимальной эффективности.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию