Должен ли я всегда использовать ChangeDetectionStrategy.OnPush - PullRequest
0 голосов
/ 25 октября 2018

Должен ли я всегда использовать ChangeDetectionStrategy.OnPush в своих компонентах?

Я всегда слышу, как OnPush абсолютно удивителен и решает так много проблем, ускоряет приложение Angular и даже избавляется от NgZone.Но если это так, то почему он не генерируется по умолчанию с ng g component?

Если это так удивительно, то должны ли мы всегда его использовать?

1 Ответ

0 голосов
/ 25 октября 2018

почему он не генерируется по умолчанию с компонентом ng g?

Это дизайнерское решение, которое должен принять разработчик.ChangeDetectionStartegy.OnPush будет работать только при использовании неизменяемых объектов.Если вы этого не сделаете, вам будет трудно найти, что происходит с вашим компонентом.Так как угловая команда не заставляет вас использовать неизменяемые объекты, зачем им создавать компонент с этой стратегией.

Подробнее об ChangeDetection можно прочитать здесь: https://blog.angularindepth.com/everything-you-need-to-know-about-change-detection-in-angular-8006c51d206f

OnPush предназначен для работыс компонентами, которые имеют @Input() декораторы.В простых словах компоненты, которые принимают входные данные от своих родительских компонентов.Поскольку обнаружение изменений является дорогостоящей операцией, вы можете настроить такие компоненты для запуска обнаружения изменений только при изменении их входных свойств.

Хорошим примером использования OnPush() будет компонент загрузчика.

...