Tui

Tree 树形控件
TsTree 提供常见树节点交互能力:单选、父子勾选联动、节点禁用,以及同层/自由拖拽。
支持 childCheckMode 子节点单选模式与 disabledKeys 默认禁用节点配置。
拖拽场景推荐配合 update:data 持久化最新结构。
基础用法(单选 + 勾选模式 + 禁用 keys)
支持节点单选、childCheckMode 子节点勾选模式与 disabledKeys 默认禁用节点配置。
前端组
Vue 研发
React 研发
历史项目(禁用)
后端组
Java 服务
平台能力(三级/四级示例)
网关集群(第三级)
生产集群(第四级)
预发集群(第四级)
可观测中心(第三级)
当前单选节点:frontend
当前勾选节点:backend-platform-gateway-prod
禁用节点 keys:frontend-legacy
示例代码
vue
同层拖拽(dragMode = sibling)
同一父节点下允许拖拽排序,不允许跨层级移动。
产品线
需求池整理
版本规划
需求评审
研发线
技术方案评审
代码开发
联调测试
dragMode="sibling" 仅支持同级节点排序,不能跨父级移动。
示例代码
vue
自由拖拽(dragMode = free)
支持跨层级拖拽,可放置到目标节点前、后或内部。
待办
需求同步
接口联调
进行中
UI 实现
单元测试
已完成
代码评审
dragMode="free" 支持跨层级自由拖拽,可放到节点前、后或节点内部。
最近一次拖拽:暂无
示例代码
vue
自定义箭头 + 独立勾选
通过 #arrow 插槽替换展开箭头;通过 independentCheck(或 checkStrictly)开启父子节点互不影响的勾选模式。
服务域
API 网关
任务调度
基础设施
消息队列
缓存服务
使用 `showArrow` 可关闭 arrow(含 arrow 插槽渲染)。
使用 `independentCheck` 后,父子节点勾选互不影响。
当前勾选:service-api
示例代码
vue
文件夹目录(FolderOpen/FolderClose)
通过 showCheckbox=false 隐藏复选框,结合 label-prefix/label-suffix 插槽实现文件夹目录样式。
docs
guides
getting-started.md
tree-component.md
examples
tree-basic.vue
tree-folder.vue
src
components
Tree.vue
TreeNode.vue
该示例使用 FolderCloseIcon / FolderOpenIcon 构建文件夹目录,并隐藏了复选框。
示例代码
vue
属性 Props
属性名
说明
类型
可选值
默认值
版本说明
data
树节点数据
TreeNodeData[]
-
[]
v-model
当前单选节点 key
string | number | null
-
null
value
非受控模式下的单选节点 key
string | number | null
-
null
checkedKeys
勾选节点 key 列表
Array<string | number>
-
[]
expandedKeys
展开节点 key 列表
Array<string | number>
-
[]
checkable
是否显示勾选框
boolean
-
true
showCheckbox
是否显示复选框(隐藏后不影响 v-model 与展开逻辑)
boolean
-
true
selectable
是否允许节点单选
boolean
-
true
checkStrictly
勾选是否父子不关联
boolean
-
false
independentCheck
独立勾选模式(`checkStrictly` 的语义化别名)
boolean
-
false
childCheckMode
子节点勾选模式:`multiple` 为多选且不影响父节点;`single` 为同级单选且会联动父节点
'multiple' | 'single'
multiple / single
multiple
defaultExpandAll
是否默认展开全部节点
boolean
-
false
showArrow
是否显示展开箭头(关闭后也会关闭 arrow 插槽渲染)
boolean
-
true
disabled
是否禁用整个树
boolean
-
false
dragMode
拖拽模式
'none' | 'sibling' | 'free'
none / sibling / free
none
indent
层级缩进像素
number
-
20
nodeKey
节点唯一键字段名
string
-
key
labelKey
节点显示文本字段名
string
-
label
childrenKey
子节点字段名
string
-
children
disabledKey
禁用字段名
string
-
disabled
disabledKeys
默认禁用节点 key 列表(支持父/子节点)
Array<string | number>
-
[]
事件 Events
事件名
说明
回调参数
版本说明
update:modelValue
单选节点变化
(value: TreeKey | null) => void
change
单选节点变化(附带节点)
(value: TreeKey | null, node: TreeNodeData | null) => void
update:checkedKeys
勾选节点变化
(keys: TreeKey[]) => void
check
勾选动作触发
(keys: TreeKey[], node: TreeNodeData, checked: boolean) => void
update:expandedKeys
展开节点变化
(keys: TreeKey[]) => void
expand
展开动作触发
(keys: TreeKey[], node: TreeNodeData, expanded: boolean) => void
update:data
拖拽后最新树数据
(treeData: TreeNodeData[]) => void
node-drop
拖拽落点事件
(payload: TreeDropPayload) => void
插槽 Slots
插槽名
说明
版本说明
default
自定义节点内容,参数:{ node, level }
-
label-prefix
label 前缀插槽,参数:{ node, level, expanded, hasChildren, disabled }
-
label-suffix
label 后缀插槽,参数:{ node, level, expanded, hasChildren, disabled }
-
arrow
自定义展开箭头,参数:{ node, level, expanded, hasChildren, disabled }
-
TreeNodeData Type
属性名
说明
类型
可选值
默认值
版本说明
key
节点唯一 key
string | number
-
-
label
节点显示文本
string
-
-
children
子节点
TreeNodeData[]
-
[]
disabled
节点是否禁用
boolean
-
false
checkable
节点是否可勾选
boolean
-
true
selectable
节点是否可单选
boolean
-
true
draggable
节点是否可拖拽
boolean
-
true
基础用法(单选 + 勾选模式 + 禁用 keys)
同层拖拽(dragMode = sibling)
自由拖拽(dragMode = free)
自定义箭头 + 独立勾选
文件夹目录(FolderOpen/FolderClose)
属性 Props
事件 Events
插槽 Slots
TreeNodeData Type