Skip to content

Tree 树

用于展示层级数据,支持选中、展开、多选、懒加载与节点拖拽。

基础用法

层级树

点击展开按钮显示 / 收起子节点,点击节点文本选中该节点。

受控展开与选中

初始展开与选中

expanded 控制展开节点,selected 控制选中节点。

多选

可多选(checkable)

禁用节点

禁用节点

懒加载

懒加载(展开时异步回填子节点)

点击「目录 A」前的展开箭头触发加载

设置 lazy 后,无 children 且未标记 isLeaf / loaded 的节点视为「未加载」:点击展开箭头派发 oas-loaddetail: { key })并调用 load 属性回调,由宿主回填子节点后重设 data 属性;加载期间展开箭头位置显示 loading 占位,回填完成后自动展开并收起占位。标记 isLeaf: true 的节点不显示展开箭头。

节点拖拽

可拖拽(拖动换序 / 换父)

拖拽节点到目标行上 / 下 / 中部,分别插入其前 / 后 / 子

设置 draggable 后可拖拽节点换序或换父:拖到目标行上半区插入其前(before)、下半区插入其后(after)、中部且目标可展开时移入其下(inner),拖拽过程有插入线与高亮反馈;松手派发 oas-node-dropdetail: { dragKey, dropKey, position }),由宿主更新数据后重设 data 属性。拖到树空白处视为移入根(dropKey 为空字符串、position: 'inner')。

大数据量(虚拟滚动)

万级节点虚拟滚动

设置 height 开启虚拟化(搭配 row-height 定高):树复用 oas-virtual-list 只渲染可见窗口内的节点,展开状态保存在 expanded 属性中,滚动与重渲染均不丢失。

事件

选中与勾选事件

选中: · 勾选:

API

属性

属性说明类型默认值
checkable是否显示复选框boolean
checked勾选节点 key 集合(逗号分隔)string
data节点数据 [{ key, label, children?, disabled?, isLeaf?, loaded? }],JSON 字符串TreeNode[] | string[]
draggable节点可拖拽换序 / 换父,落点显示插入线 / 高亮,松手派发 oas-node-dropboolean
expanded展开节点 key 集合(逗号分隔)string
height虚拟滚动视口高度(px);设置后开启大数据量虚拟化渲染string360
lazy懒加载:无 children 且未标记 isLeaf / loaded 的节点,展开时触发加载boolean
load懒加载回调 (payload: { key }) => void,与 oas-load 事件并存;宿主回填子节点后重设 data 属性(payload: { key: string }) => void
row-height虚拟化时每行固定高度(px)string32
selected选中节点 keystring

事件

事件说明
oas-check勾选变化,detail: { key, checked }
oas-load懒加载触发,detail: { key };宿主回填 children 后重设 data 属性
oas-node-drop节点拖放,detail: { dragKey, dropKey, position }positionbefore / after / innerdropKey 为空字符串表示移入根
oas-select选中节点,detail: { key, selected }

节点字段说明:isLeaf: true 表示显式叶子(懒加载下不显示展开箭头);loaded: true 表示已加载完成(配合 children 使用,避免重复触发加载)。