Angular: Является ли использование "trackBy: index" хорошей практикой? - PullRequest
0 голосов
/ 19 декабря 2018

Использование «trackBy: index» в ngFor - хорошая практика или нет?

Например:

<li *ngFor="let error of fileErrors.value; trackBy : index;"> {{error}} </li>

Использование каждого раза, когда trackBy необходим во всех * ngFor для улучшения производительности илимы можем игнорировать это.

Если мы проигнорируем, то какая реализация итератора будет использоваться по умолчанию?

1 Ответ

0 голосов
/ 19 декабря 2018

Использование каждого раза, когда trackBy необходим во всех * ngFor для повышения производительности, или мы можем игнорировать это.

Прежде всего, я хотел бы начать с того, что тратить время на микрооптимизациюможет быть большой тратой времени и в конечном итоге не дать реального результата в производительности.Обычно лучше сосредоточиться на хороших практиках / соглашениях в области кодирования, а затем в конце цикла разработки приблизиться к производительности, когда вы сможете правильно определить свои узкие места.

Однако при работе с большими коллекциями в Angular это хорошопрактиковаться в использовании trackBy.Если вы этого не сделаете, то Angular должен удалить все элементы DOM, связанные с данными, и воссоздать их.Это означает множество манипуляций с DOM, особенно в случае большой коллекции, и, как мы знаем, манипуляции с DOM стоят дорого.

Что приводит нас к вашему вопросу:

Angular: Является ли использование «trackBy: index» хорошей практикой?

Ответ, это зависит от необходимости во всех директивах ngFor.Используйте trackBy соответственно для каждого конкретного случая.Если вы имеете дело с небольшими наборами данных, то вы действительно не заметите большого прироста производительности, и снова вы будете делать преждевременные оптимизации, которые могут не дать заметного прироста производительности.

Редактирование на основе отслеживанияКомментарий:

Что произойдет, если мы будем использовать в каждом * ngFor?Даже если коллекция не такая большая?

Использование trackBy приведет к угловому отслеживанию того, какие элементы были добавлены или удалены в соответствии с уникальным идентификатором, и созданию или уничтожению только тех вещей, которые изменились.Можно использовать trackBy в каждом ngFor, если это то, что вы решили сделать.Это просто не нужно, и прирост производительности, вероятно, будет незначительным в небольших коллекциях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...