懒加载插件
提供懒加载子节点能力,在首次展开时动态加载并追加到树。
安装
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[] | 覆盖:未加载时先加载再切换 |
节点方法
| 名称 | 参数 | 说明 |
|---|---|---|
isLoaded() | 无 | 当前节点是否已加载 |
isLoading() | 无 | 当前节点是否正在加载 |
hasChildren() | 无 | 重写:未加载返回 true,加载后根据子节点判断 |