Skip to content

Vue 2 スクロール最適化

紹介

Vue 2の仮想DOMの diff メカニズム(両端diff)のため、Vue 2の仮想リストで下にスクロールすると、テーブル内のすべてのtr要素が更新されます。

上にスクロールすると、新しいtr要素がテーブル上部に追加され、tr要素がテーブル末尾から削除されます。これは正しいです。

下にスクロールすると、上にスクロールするよりも明らかに遅延を感じます。

したがって、この最適化を実装して、マウスホイールでの上下スクロールが同様に感じられるようにします。

設定

props.optimizeVue2Scroll を使用してVue 2スクロール最適化を有効にします。

vue
<StkTable optimize-vue2-scroll></StkTable>

最適化原則

下にスクロールすることは2つのアクションに分解されます:

  1. テーブル下部に新しいtr要素を追加します。
  2. 短い遅延後に上部からtr要素を削除します。

つまり、まず仮想リストの startIndex を変更せずずに維持し、短時間後にターゲット値に変更します。これはVue 2のdiffメカニズムに有利であり、不必要なDOM更新を減らしてスクロールパフォーマンスを向上させます。

TIP

マウスのドラッグスクロールバーで大規模なドラッグをする場合、この最適化schemeを適用すると、多くのノードが生成されます。DOMノード数を制御するために、この操作は最適化されません

MITライセンスの下で公開されています