懒加载插件
提供懒加载子节点能力,在首次展开时动态加载并追加到树。
安装
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 等),确保新节点具备完整方法集