TreeSelect 树选择

基础树选择

最基本的使用方法,常用于选择省份。

带多选的树选择

允许选取多个选项。

广州市
深圳市

可过滤的树选择

树结构支持过滤。

复杂数据类型

支持控制选中值的类型。

广州市
深圳市

属性透传

支持透传 popupPropstreeProps

异步加载

通过透传实现异步加载树节点。

可折叠选项

多选情况下,超出该数值的选中项折叠。

default:

广州市
+1

use collapsedItems:

size control:
disabled control:
readonly control:
广州市
Function - More(1)
广州市
Slot - More(1)

自定义选中项展示

支持自定义选中项展示,常用于组合 label 和 value 展示。

深圳市(shenzhen)
深圳市(shenzhen)
广州市(guangzhou)

自定义前后缀

支持自定义选择器的前缀、后缀,也可以使用suffixIcon自定义翻转箭头图标。

后缀内容

TreeSelect Props

名称类型默认值描述必传
autoWidthBooleanfalse宽度随内容自适应N
autofocusBooleanfalse自动聚焦N
borderlessBooleanfalse无边框模式N
clearableBooleanfalse是否允许清空N
collapsedItemsSlot / Function-多选情况下,用于设置折叠项内容,默认为 +N。如果需要悬浮就显示其他内容,可以使用 collapsedItems 自定义。value 表示当前存在的所有标签,collapsedSelectedItems 表示折叠的标签,count 表示折叠的数量,onClose 表示移除标签的事件回调。TS 类型:TNode<{ value: DataOption[]; collapsedSelectedItems: DataOption[]; count: number; onClose: (context: { index: number, e?: MouseEvent }) => void }>通用类型定义N
dataArray[]树选择的数据列表。结构:[{ label: TNode, value: string | number, text: string, ... }],其中 label 表示选项呈现的内容,可自定义;value 表示选项的唯一值;表示当 label 用于选项复杂内容呈现时,text 用于搜索功能。
其中 labelvalue 可以使用 keys 属性定义别名。TS 类型:Array<DataOption>
N
disabledBooleanundefined是否禁用组件N
emptyString / Slot / Function-当下拉列表为空时显示的内容。TS 类型:string | TNode通用类型定义N
filterFunction-过滤方法,用于对现有数据进行搜索过滤,判断是否过滤某一项数据。TS 类型:(filterWords: string, option: DataOption) => booleanN
filterableBooleanfalse是否可搜索N
inputPropsObject-透传给 输入框 Input 组件的全部属性。TS 类型:InputPropsInput API Documents详细类型定义N
inputValueString / Number-输入框的值。支持语法糖 v-model:inputValue。TS 类型:stringInput API Documents详细类型定义N
defaultInputValueString / Number-输入框的值。非受控属性。TS 类型:stringInput API Documents详细类型定义N
keysObject-用来定义 value / label / disabled / childrendata 数据中对应的字段别名,示例:{ value: 'key', label: 'name', children: 'list' }。TS 类型:TreeKeysType通用类型定义N
labelString / Slot / Function-左侧文本。TS 类型:string | TNode通用类型定义N
loadingBooleanfalse是否正在加载数据N
loadingTextString / Slot / Function-远程加载时显示的文字,支持自定义。如加上超链接。TS 类型:string | TNode通用类型定义N
maxNumber0用于控制多选数量,值为 0 则不限制N
minCollapsedNumNumber0最小折叠数量,用于多选情况下折叠选中项,超出该数值的选中项折叠。值为 0 则表示不折叠N
multipleBooleanfalse是否允许多选N
panelBottomContentString / Slot / Function-面板内的底部内容。TS 类型:string | TNode通用类型定义N
panelTopContentString / Slot / Function-面板内的顶部内容。TS 类型:string | TNode通用类型定义N
placeholderStringundefined占位符N
popupPropsObject-透传给 popup 组件的全部属性。TS 类型:PopupPropsPopup API Documents详细类型定义N
popupVisibleBooleanundefined是否显示下拉框。支持语法糖 v-model:popupVisibleN
defaultPopupVisibleBooleanundefined是否显示下拉框。非受控属性N
prefixIconSlot / Function-组件前置图标。TS 类型:TNode通用类型定义N
readonlyBooleanundefined只读状态,值为真会隐藏输入框,且无法打开下拉框N
reserveKeywordBooleanfalse多选且可搜索时,是否在选中一个选项后保留当前的搜索关键词N
selectInputPropsObject-【开发中】透传 SelectInput 筛选器输入框组件的全部属性。TS 类型:SelectInputPropsSelectInput API Documents详细类型定义N
sizeStringmedium尺寸。可选项:small/medium/largeN
statusStringdefault输入框状态。可选项:default/success/warning/errorN
suffixString / Slot / Function-后置图标前的后置内容。TS 类型:string | TNode通用类型定义N
suffixIconSlot / Function-组件后置图标。TS 类型:TNode通用类型定义N
tagPropsObject-透传 Tag 标签组件全部属性。TS 类型:TagPropsTag API Documents详细类型定义N
tipsString / Slot / Function-输入框下方提示文本,会根据不同的 status 呈现不同的样式。TS 类型:string | TNode通用类型定义N
treePropsObject-透传 Tree 组件的全部属性。TS 类型:TreePropsTree API Documents通用类型定义详细类型定义N
valueString / Number / Object / Array-选中值,泛型 TreeValueType 继承自 TreeSelectValue。支持语法糖 v-modelv-model:value。TS 类型:TreeValueType type TreeSelectValue = string | number | TreeOptionData | Array<string | number | TreeOptionData>通用类型定义详细类型定义N
defaultValueString / Number / Object / Array-选中值,泛型 TreeValueType 继承自 TreeSelectValue。非受控属性。TS 类型:TreeValueType type TreeSelectValue = string | number | TreeOptionData | Array<string | number | TreeOptionData>通用类型定义详细类型定义N
valueDisplaySlot / Function-自定义选中项呈现方式。TS 类型:string | TNode<{ value: TreeOptionData | TreeOptionData[]; onClose: (index: number) => void }>通用类型定义N
valueTypeStringvalue用于控制选中值的类型。假设数据选项为:[{ label: '姓名', value: 'name' }],value 表示值仅返回数据选项中的 value, object 表示值返回全部数据。可选项:value/objectN
onBlurFunctionTS 类型:(context: SelectInputBlurContext & { value: TreeSelectValue }) => void
输入框失去焦点时触发
N
onChangeFunctionTS 类型:(value: TreeValueType, context: TreeSelectChangeContext<DataOption>) => void
节点选中状态变化时触发,context.node 表示当前变化的选项,context. trigger 表示触发变化的来源。泛型 TreeValueType 继承自 TreeSelectValue详细类型定义
interface TreeSelectChangeContext<DataOption> { node: TreeNodeModel<DataOption>; data: DataOption; index?: number; trigger: TreeSelectValueChangeTrigger; e?: MouseEvent | KeyboardEvent | Event }

type TreeSelectValueChangeTrigger = 'clear' | 'tag-remove' | 'backspace' | 'check' | 'uncheck'
N
onClearFunctionTS 类型:(context: { e: MouseEvent }) => void
点击清除按钮时触发
N
onEnterFunctionTS 类型:(context: { inputValue: string; e: KeyboardEvent; value: TreeValueType }) => void
回车键按下时触发。inputValue 表示输入框的值,value 表示选中值。泛型 TreeValueType 继承 TreeSelectValue
N
onFocusFunctionTS 类型:(context: { value: TreeSelectValue; e: FocusEvent }) => void
输入框获得焦点时触发
N
onInputChangeFunctionTS 类型:(value: string, context: SelectInputValueChangeContext) => void
输入框值发生变化时触发,context.trigger 表示触发输入框值变化的来源:文本输入触发、清除按钮触发、失去焦点等
N
onPopupVisibleChangeFunctionTS 类型:(visible: boolean, context: TreeSelectPopupVisibleContext<DataOption>) => void
下拉框显示或隐藏时触发。单选场景,选中某个选项时触发关闭,此时需要添加参数 node详细类型定义
import { PopupVisibleChangeContext, PopupTriggerEvent, PopupTriggerSource } from '@Popup'

interface TreeSelectPopupVisibleContext<T> { e?: PopupTriggerEvent | Event; node?: TreeNodeModel<T>; trigger?: PopupTriggerSource | 'clear'; }
N
onRemoveFunctionTS 类型:(options: RemoveOptions<DataOption, TreeValueType>) => void
多选模式下,选中数据被移除时触发。详细类型定义
export interface RemoveOptions<T extends TreeOptionData = TreeOptionData, N extends TreeSelectValue = TreeSelectValue> { value: N; data: T; index: number; node: TreeNodeModel<T>; e?: MouseEvent | KeyboardEvent; trigger: 'tag-remove' | 'backspace'; }
N
onSearchFunctionTS 类型:(filterWords: string, context: { e: KeyboardEvent | SelectInputValueChangeContext['e'] }) => void
输入值变化时,触发搜索事件。主要用于远程搜索新数据。设置 filterable=true 开启此功能。优先级高于本地数据搜索 filter,即一旦存在这个远程搜索事件 filter 失效
N

TreeSelect Events

名称参数描述
blur(context: SelectInputBlurContext & { value: TreeSelectValue })输入框失去焦点时触发
change(value: TreeValueType, context: TreeSelectChangeContext<DataOption>)节点选中状态变化时触发,context.node 表示当前变化的选项,context. trigger 表示触发变化的来源。泛型 TreeValueType 继承自 TreeSelectValue详细类型定义
interface TreeSelectChangeContext<DataOption> { node: TreeNodeModel<DataOption>; data: DataOption; index?: number; trigger: TreeSelectValueChangeTrigger; e?: MouseEvent | KeyboardEvent | Event }

type TreeSelectValueChangeTrigger = 'clear' | 'tag-remove' | 'backspace' | 'check' | 'uncheck'
clear(context: { e: MouseEvent })点击清除按钮时触发
enter(context: { inputValue: string; e: KeyboardEvent; value: TreeValueType })回车键按下时触发。inputValue 表示输入框的值,value 表示选中值。泛型 TreeValueType 继承 TreeSelectValue
focus(context: { value: TreeSelectValue; e: FocusEvent })输入框获得焦点时触发
input-change(value: string, context: SelectInputValueChangeContext)输入框值发生变化时触发,context.trigger 表示触发输入框值变化的来源:文本输入触发、清除按钮触发、失去焦点等
popup-visible-change(visible: boolean, context: TreeSelectPopupVisibleContext<DataOption>)下拉框显示或隐藏时触发。单选场景,选中某个选项时触发关闭,此时需要添加参数 node详细类型定义
import { PopupVisibleChangeContext, PopupTriggerEvent, PopupTriggerSource } from '@Popup'

interface TreeSelectPopupVisibleContext<T> { e?: PopupTriggerEvent | Event; node?: TreeNodeModel<T>; trigger?: PopupTriggerSource | 'clear'; }
remove(options: RemoveOptions<DataOption, TreeValueType>)多选模式下,选中数据被移除时触发。详细类型定义
export interface RemoveOptions<T extends TreeOptionData = TreeOptionData, N extends TreeSelectValue = TreeSelectValue> { value: N; data: T; index: number; node: TreeNodeModel<T>; e?: MouseEvent | KeyboardEvent; trigger: 'tag-remove' | 'backspace'; }
search(filterWords: string, context: { e: KeyboardEvent | SelectInputValueChangeContext['e'] })输入值变化时,触发搜索事件。主要用于远程搜索新数据。设置 filterable=true 开启此功能。优先级高于本地数据搜索 filter,即一旦存在这个远程搜索事件 filter 失效

何时使用

用于选取树形结构数据,如文件结构、组织架构、地理行政区等。

组件搭配使用

与搜索框搭配使用,通过关键词筛选数据内容,便于用户在树结构中快速找到所需信息。

常见用法

树选择中父子结构可包含多维度字,如班级、同学。

多选树选择中父子项具有联动关系,当子项部分选中时,父项为半选中状态;点击半选中状态的多选框,执行全选操作;当子项全被选中时,父项为选中状态。

推荐/慎用示例

当树选择项较多时,默认折叠树层级结构,快速定位目标一级选项,如省市数据,可先快速定位省,再找到市。

树选择各层级选项的父子关系应具备逻辑相关性,数据结构由大到小,避免归属关系混乱。

相似组件

组件名何时使用
树选择用于选取树形结构数据,如文件结构、组织架构、地理行政区等。
级联选择器当数据集合较大,用户需要从有清晰层级结构的数据集合中进行选择时。
穿梭框一组数据进行两种状态的分类时;总类和子类的选项筛选时。
用于承载有父子关系的结构化内容,提供内容层级的展示。
  • small
  • medium
  • large
  • value
  • object