Skip to content

树形控件

树形控件

树形控件用于展示具有层级结构的数据,支持选择、展开/折叠等交互操作,适用于文件夹、组织架构、分类管理等场景。

基础用法

基础的树形控件用法,展示层级结构的数据。

显示代码箭头
复制GitHub

可选择的树形控件

设置 checkable 属性为 true 可以显示复选框,实现节点的选择功能。

当前选中的节点:
暂无选中节点
显示代码箭头
复制GitHub

默认展开和选中

通过 expandedchecked 属性可以设置默认展开和选中的节点。

默认展开节点: 一级节点 1, 二级节点 1-1
默认选中节点: 三级节点 1-1-2, 二级节点 2-1
显示代码箭头
复制GitHub

手风琴模式

设置 accordion 属性为 true 可以实现手风琴模式,同级节点只能展开一个。

普通模式:
手风琴模式:
显示代码箭头
复制GitHub

禁用状态

设置 disabled 属性可以禁用整棵树,也可以通过在数据中设置 disabled 字段来禁用特定节点。

单个节点禁用:
整棵树禁用:
显示代码箭头
复制GitHub

自定义节点内容

通过默认插槽可以自定义节点的内容和样式。

显示代码箭头
复制GitHub

控制节点展开方式

通过设置 expand-on-click-node 属性可以控制是否在点击节点时展开/折叠节点。

点击节点展开/折叠:
仅点击箭头展开/折叠:

通过设置 expand-on-click-node 属性可以控制节点的展开/折叠方式:

  • true: 点击节点时展开/折叠(默认行为)
  • false: 只能通过点击箭头图标展开/折叠
显示代码箭头
复制GitHub

树形控件 API

属性

属性名说明类型可选值默认值
data显示的数据array[]
node-key每个树节点用来作为唯一标识的属性stringid
label指定节点标签为节点对象的某个属性值stringlabel
children指定子树为节点对象的某个属性值stringchildren
expanded默认展开的节点的 key 的数组array[]
checked默认勾选的节点的 key 的数组array[]
indent相邻级节点间的水平缩进,单位为像素number16
checkable节点是否可被勾选booleanfalse
accordion是否每次只打开一个同级树节点booleanfalse
expand-on-click-node是否在点击节点的时候展开或者收缩节点booleantrue
disabled是否禁用整棵树booleanfalse

事件

事件名说明回调参数
node-expand节点被展开时触发(nodeData, node)
node-collapse节点被收起时触发(nodeData, node)
check-change节点选中状态发生变化时触发(checkedKeys: string[])

方法

方法名说明参数
getCheckedKeys获取当前选中的节点key数组
getCheckedNodes获取当前选中的节点数据
setCheckedKeys设置选中的节点key数组(keys: string[])
expandAll展开所有节点
collapseAll折叠所有节点

插槽

插槽名说明作用域参数
default自定义树节点的内容{ node: TreeNodeType, data: object }
empty自定义树为空时的内容

数据结构

每个节点对象应包含以下字段:

typescript
interface NodeData {
  [nodeKey: string]: string; // 唯一标识,默认为id
  [label: string]: string;   // 节点显示的文本,默认为label
  [children: string]?: NodeData[]; // 子节点,默认为children
  disabled?: boolean;        // 是否禁用节点
}

样式变量

树形控件使用了以下样式变量,可通过 SCSS 变量进行自定义:

变量名说明
$font-size-default默认字体大小
$text-color-default默认文本颜色
$border-color-default默认边框颜色
$bg-color-default默认背景颜色
$bg-color-hover悬停背景颜色
$theme-color-primary主题色-主要

基于MIT许可发布