@Pipe({name:'myPipe', pure: false})
Я не могу понять, нечистые трубы, некоторые из них лучше с чистыми трубами.Что такое нечистая труба в угловом?
Пожалуйста, объясните мне простой и простой пример?
@Pipe({name:'myPipe', pure: false})
Я не могу понять, нечистые трубы, некоторые из них лучше с чистыми трубами.Что такое нечистая труба в угловом?
Пожалуйста, объясните мне простой и простой пример?
Чистая труба вызывается только тогда, когда Angular обнаруживает изменение значения или параметров, передаваемых в трубу. Нечистая труба вызывается для каждого цикла обнаружения изменений независимо от того, изменяется ли значение или параметры.
Это относится к изменениям, которые не обнаруживаемых Угловая
В этих случаях вы, вероятно, все еще хотите, чтобы труба была выполнена.
Вы должны знать, что нечистые трубы подвержены неэффективности. Например, когда массив передается в канал для фильтрации, сортировки, ... тогда эта работа может выполняться каждый раз, когда выполняется запуск обнаружения изменений (что довольно часто особенно относится к настройке по умолчанию ChangeDetectionStrategy
), хотя в массиве может даже не быть изменилось. Ваша труба должна попытаться распознать это и, например, вернуть результаты кэширования.
Можете ли вы объяснить мне пример? –
Пример, чтобы продемонстрировать, что именно? http://stackoverflow.com/a/37828164/217408 показывает канал фильтра (но не кэширование) –
Чистое средство для труб, оно будет выполняться каждый раз, когда кто-то меняет вход, переданный ему. Например, '{{2 | exponent: var}}; . Теперь, когда мы меняем вход 'var', значение обновляется. Аналогичным образом, пожалуйста, обновите мое значение нечистым трубопроводом. Кто угодно??Здесь 'exponent' - моя труба –
Помимо предыдущего ответа, я хочу добавить еще одну разницу: количество экземпляров.
Предположим, что труба используется несколько раз в HTML-коде. Как:
<p> {{'Hello' | translate }}<p>
<p> {{'World' | translate }}<p>
(вы можете увидеть это путем генерации случайного идентификатора в конструктор трубы и распечатать его в обоих: constructor
и transform
метод)
Как чистые трубы (или вообще чистые функции) делает (должны) не имеют ЛЮБЫХ побочных эффектов, один и тот же чистый код можно повторно использовать сколько угодно раз, не беспокоясь. Похоже, именно поэтому чистые трубы только однажды создаются.
OBS: это действительно в моей угловой среде 4.0.
прочитайте [Существенное различие между чистыми и нечистыми трубами и почему это важно) (https://medium.com/@maximus.koretskyi/the-essential-difference-between-pure-and-impure-pipes-and -why-that-matters-999818aa068), который объясняет детали, лежащие в основе разницы, и исследует лежащую в основе ментальную модель. –