跳转到内容

树选择 TreeSelect

最简单的用法。

可以通过设置 treeCheckable 属性开启复选框勾选。

可以通过treeCheckStrategy属性定制回填方式。

选中值支持双向绑定。

自定义树选择下拉框的页头和页脚

使用 fallback-option 自定义找不到选项的值的显示效果,默认找不到选项就展示值本身。用户可以将其设定为 false 来隐藏那些没有匹配到节点数据的值。

通过 fieldNames 字段可以自定义 TreeData 的字段名。

labelInValuetrue 时,value 格式为: { label: string, value: string }

可以通过 loadMore 进行动态加载。此时可设置 isLeaf 来标示叶子节点。

多选

通过 popupVisible (支持 v-model) 控制下拉框的展开和收起。

监听 search 事件,在事件处理函数中获取数据并更新 treeData。 自定义搜索逻辑时,建议关闭内部过滤逻辑(:disable-filter="true"),以免影响自定义结果。

设置 :allow-search="true" 启用搜索功能。动态加载时候只能在已加载数据中进行搜索。默认的关键字搜索是从value字段匹配。也可以传入 filterTreeNode自定义过滤方式。

设置 size 可以使用四种尺寸(small, default, large, huge)的选择器。高度分别对应 24px、28px、32px、36px。

自定义触发元素。插槽直接提供 valuedisplayValueinputValueselectedOptionspopupVisibledisabledloadingmultiple

默认情况下,每个树节点都会使用 Ellipsis 处理溢出文本。大数据量或虚拟滚动场景可以设置 ellipsis="performant-ellipsis";设置 :ellipsis="false" 可关闭内置省略。使用 #tree-slot-title 插槽后,节点标题完全由插槽控制。

TreeSelect 默认不启用虚拟滚动。当前示例对比未配置虚拟滚动、设置 virtual-scroll="true" 和传入 virtual-list-props 三种写法,所有虚拟滚动行为都需要用户显式开启。

设置 virtual-scroll="true" 会使用组件内置的虚拟列表默认配置;传入 virtual-list-props 可以继续设置 heightitemSizebuffer。树节点固定行高会随 mini / small / medium / large 尺寸分别使用 24 / 28 / 32 / 36。设置 virtual-scroll="false" 会强制关闭包括 virtual-list-propstree-props.virtualListProps 在内的虚拟列表配置。完整参数可参考 LLMs.txt

参数名 描述 类型 默认值 版本
disabled 是否禁用 boolean false
loading 是否为加载中状态 boolean false
spin-props 传递给加载中 Spin 的属性 SpinProps -
error 是否为错误状态 boolean false
size 选择框的大小 'mini' | 'small' | 'medium' | 'large' 'medium'
border 是否显示边框 boolean true
ellipsis 是否使用 Ellipsis 渲染默认节点;performant-ellipsis 使用高性能实现,false 关闭 boolean | 'performant-ellipsis' true
allow-search 是否允许搜索,兼容 filterable 别名 boolean | { retainInputValue?: boolean } false (single) | true (multiple)
filterable allow-search 的兼容别名 boolean -
allow-clear 是否允许清除,兼容 clearable 别名 boolean false
clearable allow-clear 的兼容别名 boolean -
placeholder 提示文案 string -
fit-width 宽度是否适应文字内容 boolean false
max-w-full 最大宽度是否限制为父容器宽度 boolean true
max-tag-count 最多显示的标签数量,仅在多选模式有效,支持响应式折叠 number | 'responsive' -
multiple 是否支持多选 boolean false
default-value 默认值 string | number | Array<string | number> | LabelValue | LabelValue[] -
model-value (v-model) 绑定值 string | number | Array<string | number> | LabelValue | LabelValue[] -
field-names 指定节点数据中的字段名 TreeFieldNames -
data 数据,兼容 options 别名 TreeNodeData[] []
options data 的兼容别名 TreeNodeData[] -
label-in-value 设置value格式。默认是string,设置为true时候,value格式为: { label: string, value: string } boolean false
tree-checkable 是否展示复选框,兼容 checkable 别名 boolean false
checkable tree-checkable 的兼容别名 boolean -
tree-check-strictly 父子节点是否关联 boolean false
tree-checked-strategy 定制回显方式,兼容 checkStrategy 别名 'all' | 'parent' | 'child' 'all'
checkStrategy tree-checked-strategy 的兼容别名 'all' | 'parent' | 'child' -
show-path 单选时展示从根节点到当前节点的完整路径 boolean false
separator show-path 开启时的路径分隔符 string ' / '
tree-props 可以接受所有 Tree 组件的Props Partial<TreeProps> -
trigger-props 可以接受所有 Trigger 组件的Props Partial<TriggerProps> -
virtual-list-props 虚拟列表配置,传入此参数会显式启用虚拟滚动 VirtualListProps -
virtual-scroll 虚拟滚动开关;true 使用默认配置显式启用,false 强制关闭所有虚拟列表配置,未设置时不启用 boolean -
popup-visible (v-model) 弹出框是否可见 boolean -
default-popup-visible 默认弹出框是否可见 boolean false
dropdown-style 下拉框样式 CSSProperties -
dropdown-class-name 下拉框样式 class string | string[] -
filter-tree-node 自定义节点过滤函数 (searchKey: string, nodeData: TreeNodeData) => boolean -
load-more 动态加载数据 (nodeData: TreeNodeData) => Promise<void> -
disable-filter 禁用内部过滤逻辑 boolean false
popup-container 弹出框的挂载容器 string | HTMLElement -
fallback-option 为 value 中找不到匹配项的 key 定义节点数据 boolean | ((key: number | string) => TreeNodeData | boolean) true 2.22.0
selectable 设置可选择的节点,默认全部可选 boolean| 'leaf'| (( node: TreeNodeData, info: { isLeaf: boolean; level: number } ) => boolean) true 2.27.0
scrollbar 是否开启虚拟滚动条 boolean | ScrollbarProps true 2.39.0
show-header-on-empty 空状态时是否显示header boolean false
show-footer-on-empty 空状态时是否显示footer boolean false
input-value (v-model) 输入框的值 string - 2.55.0
default-input-value 输入框的默认值(非受控模式) string '' 2.55.0
事件名 描述 参数 版本
change 值改变时触发 value: string | number | LabelValue | Array<string | number> | LabelValue[] | undefined
popup-visible-change 下拉框显示状态改变时触发 visible: boolean
search 搜索值变化时触发 searchKey: string
clear 点击清除时触发 -
input-value-change 输入框的值发生改变时触发 inputValue: string 2.55.0
插槽名 描述 参数 版本
trigger 自定义触发元素 TreeSelectTriggerSlotProps
prefix 前缀 -
label 自定义选择框显示 data: mixed
tag 自定义多选标签显示 data: TreeNodeData
header 自定义下拉框页头 -
loader 定制加载中显示的内容 -
empty 定制空数据展示 -
footer 自定义下拉框页脚 -
tree-slot-extra 定制 tree 组件的渲染额外节点内容 -
tree-slot-title 定制 tree 组件的节点标题 title: string
tree-slot-icon 定制 tree 组件的节点图标 node: TreeNodeData 2.18.0
tree-slot-switcher-icon 定制 tree 组件的 switcher 图标 -