Skip to content

TreeSelect 树选择器

何时使用

  • 类似 Select 的选择控件,当可选择的数据结构为树形结构时使用 TreeSelect,例如公司层级、学科系统、分类目录等层级数据。

基础用法

多选

可搜索

禁用与清空

尺寸

自定义字段映射

当你的数据字段不是 label/key/children 时,可通过 label-field/key-field/children-field 指定:

严格选择与路径显示

  • check-strictly:开启后允许选择任意节点;关闭时仅允许选择叶子节点。
  • show-path:单选时在输入框显示完整层级路径(如 “研发 / 前端”)。

默认展开/折叠

可通过 default-expand-alldefault-expanded-keys 控制初始展开。

## API
属性名说明类型可选值默认值
modelValue绑定值,支持单选与多选string | number | (string | number)[]''
data树形数据TreeOption[][]
labelField自定义标签字段名string'label'
keyField自定义唯一键字段名string'key'
childrenField自定义子节点字段名string'children'
multiple是否多选booleanfalse
filterable是否可搜索booleanfalse
clearable是否可清空booleanfalse
placeholder占位符string'请选择'
size输入框尺寸'large' | 'default' | 'small'large / default / smalldefault
noMatchText搜索无匹配项时的提示文案string'无匹配数据'
noDataText无数据时的提示文案string'无数据'
popperClass下拉弹层额外类名string''
checkStrictly是否允许选择任意节点(默认仅叶子可选)booleanfalse
showPath单选时是否显示完整路径booleanfalse
defaultExpandAll是否默认展开所有有子节点的节点booleanfalse
defaultExpandedKeys默认展开的节点 key 集合(string | number)[][]

事件

事件名说明参数类型
update:modelValuev-model 更新string | number | (string | number)[]
change选中值变化string | number | (string | number)[]
clear点击清空时触发
focus输入框获得焦点(evt: FocusEvent)
blur输入框失去焦点(evt: FocusEvent)
visibleChange下拉显示状态变化(visible: boolean)

TreeOption

组件使用的树节点数据结构(默认字段):

ts
export interface TreeOption {
  label?: string | number;
  key?: string | number;
  children?: TreeOption[];
  isLeaf: boolean;
  [key: string]: unknown;
}

使用建议

  • 数据量适中(< 2000 节点)场景下可直接使用当前实现;如需大数据虚拟滚动或半选联动,可在后续版本中扩展。
  • 建议在多选模式下开启 filterable,便于快速定位节点。
  • 选择项以 key 作为绑定值(modelValue),确保唯一性。