--- name: arco-vue-tree-select description: "Arco Design Vue 树选择 TreeSelect 组件参考。用于 Vue 3、`@arco-design/web-vue`、``、属性、事件、插槽、示例和实现细节。" user-invocable: false --- # 树选择 TreeSelect ## 简介 最简单的用法。 ## 基本用法 ```vue ``` ## API ### `` 属性 |参数名|描述|类型|默认值|版本| |---|---|---|:---:|:---| |disabled|是否禁用|`boolean`|`false`|| |loading|是否为加载中状态|`boolean`|`false`|| |error|是否为错误状态|`boolean`|`false`|| |size|选择框的大小|`'mini' \| 'small' \| 'medium' \| 'large'`|`'medium'`|| |border|是否显示边框|`boolean`|`true`|| |allow-search|是否允许搜索|`boolean \| { retainInputValue?: boolean }`|`false (single) \| true (multiple)`|| |allow-clear|是否允许清除|`boolean`|`false`|| |placeholder|提示文案|`string`|`-`|| |max-tag-count|最多显示的标签数量,仅在多选模式有效|`number`|`-`|| |multiple|是否支持多选|`boolean`|`false`|| |default-value|默认值|`string \| number \| Array \| LabelValue \| LabelValue[]`|`-`|| |model-value **(v-model)**|绑定值|`string \| number \| Array \| LabelValue \| LabelValue[]`|`-`|| > 仅列出常用项,低频属性按需查阅官方 API。 ### `` 事件 |事件名|描述|参数|版本| |---|---|---|:---| |change|值改变时触发|value: `string \| number \| LabelValue \| Array \| LabelValue[] \| undefined`|| |popup-visible-change|下拉框显示状态改变时触发|visible: `boolean`|| |search|搜索值变化时触发|searchKey: `string`|| |clear|点击清除时触发|-|| |input-value-change|输入框的值发生改变时触发|inputValue: `string`|2.55.0| ### `` 插槽 |插槽名|描述|参数|版本| |---|:---:|---|:---| |trigger|自定义触发元素|-|| |prefix|前缀|-|| |label|自定义选择框显示|data: `mixed`|| |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 图标|-|| ## 常用模式 - **设置 value 格式**:`labelInValue` 为 `true` 时,`value` 格式为: `{ label: string, value: string }`。 - **双向绑定**:选中值支持双向绑定。 - **动态加载**:可以通过 `loadMore` 进行动态加载。此时可设置 `isLeaf` 来标示叶子节点。 - **搜索**:设置 `:allow-search="true"` 启用搜索功能。动态加载时候只能在已加载数据中进行搜索。默认的关键字搜索是从`value`字段匹配。也可以传入 `filterTreeNode`自定义过滤方式。 - **远程搜索**:监听 `search` 事件,在事件处理函数中获取数据并更新 `treeData`。自定义搜索逻辑时,建议关闭内部过滤逻辑(`:disable-filter="true"`),以免影响自定义结果。 - **不同尺寸**:设置 `size` 可以使用四种尺寸(small, default, large, huge)的选择器。高度分别对应 24px、28px、32px、36px。 - **下拉框的页头和页脚**:自定义树选择下拉框的页头和页脚 - **自定义触发元素**:自定义触发元素。 ## 最佳实践 - 新代码优先使用 Vue 3、Composition API 和 `