Использование каждого раза, когда trackBy необходим во всех * ngFor для повышения производительности, или мы можем игнорировать это.
Прежде всего, я хотел бы начать с того, что тратить время на микрооптимизациюможет быть большой тратой времени и в конечном итоге не дать реального результата в производительности.Обычно лучше сосредоточиться на хороших практиках / соглашениях в области кодирования, а затем в конце цикла разработки приблизиться к производительности, когда вы сможете правильно определить свои узкие места.
Однако при работе с большими коллекциями в Angular это хорошопрактиковаться в использовании trackBy
.Если вы этого не сделаете, то Angular должен удалить все элементы DOM, связанные с данными, и воссоздать их.Это означает множество манипуляций с DOM, особенно в случае большой коллекции, и, как мы знаем, манипуляции с DOM стоят дорого.
Что приводит нас к вашему вопросу:
Angular: Является ли использование «trackBy: index» хорошей практикой?
Ответ, это зависит от необходимости во всех директивах ngFor
.Используйте trackBy
соответственно для каждого конкретного случая.Если вы имеете дело с небольшими наборами данных, то вы действительно не заметите большого прироста производительности, и снова вы будете делать преждевременные оптимизации, которые могут не дать заметного прироста производительности.
Редактирование на основе отслеживанияКомментарий:
Что произойдет, если мы будем использовать в каждом * ngFor?Даже если коллекция не такая большая?
Использование trackBy
приведет к угловому отслеживанию того, какие элементы были добавлены или удалены в соответствии с уникальным идентификатором, и созданию или уничтожению только тех вещей, которые изменились.Можно использовать trackBy
в каждом ngFor
, если это то, что вы решили сделать.Это просто не нужно, и прирост производительности, вероятно, будет незначительным в небольших коллекциях.