Skip to content

虚拟渲染

可见节点达到千级以上时,开启 virtual 只渲染可视区域内的行,小程序端也能流畅滚动。

基本用法

vue
<template>
  <uni-tree-view
    v-model="checked"
    show-checkbox
    multiple
    virtual
    :virtual-height="600"
    :virtual-item-height="36"
    :data="bigTreeData"
    default-expand-all
  />
</template>

三个关键参数:

参数说明
virtual-height滚动容器高度(px),必须指定
virtual-item-height每行高度(px);组件会据此固定虚拟行高度
virtual-overscan可视区外额外渲染的行数,滚动越快可适当调大

滚动到指定节点

vue
<template>
  <wd-button @click="locate">定位到目标节点</wd-button>
  <uni-tree-view ref="treeRef" virtual :virtual-height="600" :data="bigTreeData" />
</template>

<script setup>
import { ref } from "vue";

const treeRef = ref();

async function locate() {
  // expandParents: 自动展开祖先链后再滚动
  const ok = await treeRef.value.scrollToKey("area-3-2-1", { expandParents: true });
  if (!ok) {
    uni.showToast({ title: "节点不存在", icon: "none" });
  }
}
</script>

注意事项

行高必须固定

虚拟模式按 virtual-item-height 计算并固定内置节点行高。若插槽内容高度超过该值,内容可能溢出;请同步调大 virtual-item-height,且不要使用可变行高内容。

何时开启

  • 可见节点 < 500:无需开启,直接渲染更简单
  • 可见节点 ≥ 1000:建议开启
  • default-expand-all + 大数据:强烈建议开启

Released under the MIT License.