跳转到内容

懒加载插件

提供懒加载子节点能力,在首次展开时动态加载并追加到树。

安装

pnpm add @splicetree/plugin-lazy-load

使用

ts
import { createSpliceTree } from '@splicetree/core'
import lazyLoad from '@splicetree/plugin-lazy-load'

const tree = createSpliceTree(data, {
  plugins: [lazyLoad],
  configuration: {
    lazyLoad: {
      loadChildren: async (node) => {
        const resp = await fetch(`/api/children?parent=${node.id}`)
        const children = await resp.json()
        return children
      },
    },
  },
})

Configuration

选项类型默认值说明
configuration.lazyLoad.loadChildren(node: SpliceTreeNode) => Promise<any[]>异步加载并返回子节点数据

示例

基本懒加载

loading

展开时加载

loading

手动加载

loading

Api

实例方法

名称参数说明
loadedKeys已加载集合
loadingKeys加载中的集合
isLoaded(id)id: string是否已加载
isLoading(id)id: string是否正在加载
load(id)id: string手动加载
expand(ids)ids: string | string[]覆盖:未加载时先加载再展开
toggleExpand(ids)ids: string | string[]覆盖:未加载时先加载再切换
syncData(next)next: any[]覆盖:重建后恢复已加载子树

节点方法

名称参数说明
isLoaded()当前节点是否已加载
isLoading()当前节点是否正在加载
hasChildren()重写:未加载返回 true,加载后根据子节点判断

事件

名称负载说明
lazyload{ keys: string[] }已完成懒加载的节点集合

行为说明与注意事项

  • 覆盖 expand/toggleExpand:在展开/切换前确保子节点已加载
  • 覆盖 syncData:重建后自动恢复此前已懒加载的数据并重新应用覆盖方法
  • 追加子节点后,核心会为新节点应用所有已启用插件的 extendNode(包括懒加载、selectable 等),确保新节点具备完整方法集