在这里,首先您可以在不进行虚拟滚动的情况下检查应用程序的当前状态:
Image Preview Of the Website Here
滚动非常顺畅,但是正如您所看到的那样,来回搜索和导航有点慢,因为要重新加载DOM。 它的搜索逻辑并不是很慢,因为我只是使用一个简单的管道来仅根据Pokemon名称和ID过滤掉Pokemon列表。 我进行了测试,发现罪魁祸首是DOM中没有元素的疯狂。 (每个神奇宝贝物品中都有嵌套的Divs)
没有虚拟滚动的口袋妖怪列表组件。
<div class="row justify-content-center">
<app-pokemon-item *ngFor="let pokemon of pokemons | searchFilter: searchItem; let i = index;"
[pokemon]="pokemon"></app-pokemon-item>
</div>
所以现在我正在尝试实现虚拟滚动以提高性能,但这会发生:
具有虚拟滚动功能的修改后的Pokemon列表组件。
<cdk-virtual-scroll-viewport style="height: 90vh" itemSize="100">
<ng-container *cdkVirtualFor="let pokemon of pokemons | searchFilter: searchItem; let i = index;">
<app-pokemon-item [pokemon]="pokemon"></app-pokemon-item>
</ng-container>
</cdk-virtual-scroll-viewport>