组件/TreeSelect 树选择器
通用组件

TreeSelect 树选择器

用于在下拉浮层中选择树形数据,支持搜索、单选/多选。

该页面由 AI 迁移生成,请谨慎使用

内容已迁移完成,但仍建议结合源码和人工评审结果使用。

TreeSelect 树选择器

用于在下拉浮层中选择树形数据,支持搜索、单选/多选。

基础用法

TreeSelect

示例即将加载...
<script setup lang="ts">
import { computed, ref } from 'vue'

const multiple = ref(false)
const value = ref<string | number | Array<string | number> | undefined>(undefined)

const nodes = [
  {
    key: 'general',
    label: 'General',
    children: [
      { key: 'appearance', label: 'Appearance' },
      { key: 'language', label: 'Language' },
    ],
  },
  {
    key: 'account',
    label: 'Account',
    children: [
      { key: 'profile', label: 'Profile' },
      { key: 'billing', label: 'Billing' },
    ],
  },
  {
    key: 'danger',
    label: 'Danger Zone',
    disabled: true,
    children: [
      { key: 'delete', label: 'Delete account', disabled: true },
    ],
  },
]

const placeholder = computed(() => (multiple.value ? 'Select multiple' : 'Select one'))
</script>

<template>
  <div style="display: flex; flex-direction: column; gap: 12px; width: 420px;">
    <div style="display: flex; gap: 8px; align-items: center;">
      <TxButton size="small" variant="secondary" @click="multiple = !multiple">
        Toggle multiple
      </TxButton>
      <TxButton size="small" variant="secondary" @click="value = multiple ? [] : undefined">
        Clear
      </TxButton>
    </div>

    <TxTreeSelect
      v-model="value"
      :nodes="nodes"
      :multiple="multiple"
      :placeholder="placeholder"
      :dropdown-max-height="260"
    />

    <div style="color: var(--tx-text-color-secondary); font-size: 12px;">
      value: {{ value }}
    </div>
  </div>
</template>

注意事项

  • multiple 为 true 时,modelValue 需要为数组;清空会回传空数组。
  • multiple 为 false 时,清空会回传 undefined

API

TxTreeSelect Props

属性名类型默认值说明
modelValuestring | number | Array<string | number> | undefined-当前值(v-model)
nodesTreeSelectNode[][]数据源
multiplebooleanfalse是否多选
disabledbooleanfalse禁用
placeholderstring'请选择'占位文本
searchablebooleantrue是否可搜索
clearablebooleantrue是否可清空
placementPopoverPlacement'bottom-start'浮层位置
dropdownOffsetnumber6浮层偏移
dropdownWidthnumber0浮层宽度(0 表示跟随触发器)
dropdownMaxWidthnumber480浮层最大宽度
dropdownMaxHeightnumber320浮层最大高度
defaultExpandedKeysArray<string | number>[]默认展开 key

TreeSelectNode

字段类型说明
keystring | number唯一标识
labelstring展示文本
disabledboolean是否禁用
childrenTreeSelectNode[]子节点

Events

事件名参数说明
update:modelValue(v)v-model 更新
change(v)值变化
open-打开浮层
close-关闭浮层

Slots

名称说明
node自定义节点内容(slot props: node, level, expanded, selected

Expose

名称类型说明
open()() => void打开
close()() => void关闭
toggle()() => void切换
focus()() => void聚焦触发器
blur()() => void失焦触发器
clear()() => void清空
setValue(v)(v) => void设置值
getValue()() => any获取当前值
getCheckedKeys()() => Array<string | number>获取选中 key(单选也返回数组)