169 похожих чатов

Всем привет) подскажите плиз, только учусь применять на практике onPush.

Получается, если использовать эту стратегию, то при получении данных от бека мы их отрисовывать будем через async pipe, ибо если подписываться то надо будет запускать изменение обнаружений изменений вручную или же это нормальная практика, руками запускать?

20 ответов

18 просмотров

Несовсем понятно, в чем проблема?)

При onPush стратегии автоматически проверка изменений запускается только после изменений @Input, async пайпа внутри себя делает markForCheck когда приходит новое значение, можно запускать и руками через ChangeDetectorRef, если ни первый вариант ни второй вам не подходит

Bulbosaurus- Автор вопроса
Алехандро Крюков
При onPush стратегии автоматически проверка измене...

Понял, спасибо. А что лучше использовать, в плане производительности? Async pipe или же subscribe и внутри него запускать обнаружение изменений. Читал статью, в которой такие слова были сказаны. "Ручной запуск обнаружения изменения не является хаком но вы должны использовать его только в случае необходимости" В случае необходимости. Как я понял, лучше избегать. Вот в чем вопрос

Bulbosaurus
Понял, спасибо. А что лучше использовать, в плане...

та то уже на любителя и по ситуации. Главное, что обнаружение изменений onPush включено, а значит компонента не будет реагировать на каждый чих. Если не какое-то мегасложное приложение, то без onPush даже проще писать, особенно на начальных этапах изучения ангуляра) Не будет заметно разницы

Bulbosaurus
Понял, спасибо. А что лучше использовать, в плане...

буквально сегодня вышло видео от автора их Харькова, который уже давно ничего не выпускал. Там об этом пайпе, примеры его использования и полезные советы https://www.youtube.com/watch?v=DX_6GAx26U0&lc=Ugw4S6oKLosoZTnPmIh4AaABAg.9aAFxs0FSH49aAGc1yZdDd

Evgheni Чернявский
по производительности разницы нет вообще

Однако async является грязным пайпом и отрисовку делает больше одного раза

Rus
Однако async является грязным пайпом и отрисовку д...

так и не делает ничего трудоёмкого при вызове что могло хоть как-то замедлить приложение

Evgheni Чернявский
так и не делает ничего трудоёмкого при вызове что ...

Ну трудоемкость уже зависит от данных которые передаются в пайп

Rus
Ну трудоемкость уже зависит от данных которые пере...

мы же про async пайп говорим, Observable передаётся внутри два ифа на сравнение и вернуть значение из переменной, учитывая что на странице мало кто использует больше чем двух async пайпов то можно пренебречь что это грязный пайп

Evgheni Чернявский
так и не делает ничего трудоёмкого при вызове что ...

на null он не вызывает markForCheck, только когда ему приходит новое сообщение по подписке

Evgheni Чернявский
на null он не вызывает markForCheck, только когда ...

А ты уверен что после одной полной отрисовки он не рисует второй раз?

Rus
А ты уверен что после одной полной отрисовки он не...

исходники ангулара в открытом доступе, можно всегда глянуть что он делает

Rus
А ты уверен что после одной полной отрисовки он не...

В рамках одного синхронного цикла он обновит вьюху один раз.

Alex Inkin
В рамках одного синхронного цикла он обновит вьюху...

Хорошо. Он дергает markforcheck. Есть ли смысл оформлять подписку в компоненте и дергать detectchanges?

Rus
Хорошо. Он дергает markforcheck. Есть ли смысл офо...

Посмотри статью, которую я кинул — это два очень разных метода 🙂

Rus
Хорошо. Он дергает markforcheck. Есть ли смысл офо...

detectChanges по всем канонам ангуляра должен дёргаться, когда компонент выдернут из дерева проверки изменений (с помощью метода detach), т.к. он по сути синхронно запускает проверку изменений компонента и его дочерних компонентов

Vladimir Luvolunov
detectChanges по всем канонам ангуляра должен дёрг...

Не понятны слова «выдернут из дерева проверки изменений»

Rus
Не понятны слова «выдернут из дерева проверки изме...

То есть ангуляр его не будет никак проверять

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта