logoAnt Design

⌘ K
  • 设计
  • 研发
  • 组件
  • 博客
  • 资源
  • 国内镜像
YouMindTRACTIANLobeHub
6.4.3
  • 组件总览
  • 更新日志
    v6.4.3
  • 通用
    • Button按钮
    • FloatButton悬浮按钮
    • Icon图标
    • Typography排版
  • 布局
    • Divider分割线
    • Flex弹性布局
    • Grid栅格
    • Layout布局
    • Masonry瀑布流
      6.0.0
    • Space间距
    • Splitter分隔面板
  • 导航
    • Anchor锚点
    • Breadcrumb面包屑
    • Dropdown下拉菜单
    • Menu导航菜单
    • Pagination分页
    • Steps步骤条
    • Tabs标签页
  • 数据录入
    • AutoComplete自动完成
    • Cascader级联选择
    • Checkbox多选框
    • ColorPicker颜色选择器
    • DatePicker日期选择框
    • Form表单
    • Input输入框
    • InputNumber数字输入框
    • Mentions提及
    • Radio单选框
    • Rate评分
    • Select选择器
    • Slider滑动输入条
    • Switch开关
    • TimePicker时间选择框
    • Transfer穿梭框
    • TreeSelect树选择
    • Upload上传
  • 数据展示
    • Avatar头像
    • Badge徽标数
    • Calendar日历
    • Card卡片
    • Carousel走马灯
    • Collapse折叠面板
    • Descriptions描述列表
    • Empty空状态
    • Image图片
    • List列表
      废弃
    • Popover气泡卡片
    • QRCode二维码
    • Segmented分段控制器
    • Statistic统计数值
    • Table表格
    • Tag标签
    • Timeline时间轴
    • Tooltip文字提示
    • Tour漫游式引导
    • Tree树形控件
  • 反馈
    • Alert警告提示
    • Drawer抽屉
    • Message全局提示
    • Modal对话框
    • Notification通知提醒框
    • Popconfirm气泡确认框
    • Progress进度条
    • Result结果
    • Skeleton骨架屏
    • Spin加载中
    • Watermark水印
  • 其他
    • Affix固钉
    • App包裹组件
    • BorderBeam边框流光
      6.4.0
    • ConfigProvider全局化配置
    • Util工具类
何时使用
代码演示
基本
多选
从数据直接生成
可勾选
异步加载
线性样式
弹出位置
形态变体
自定义状态
最大选中数量
前后缀
自定义语义结构的样式和类
API
Tree props
showSearch
Tree 方法
TreeNode props
Semantic DOM
主题变量(Design Token)
FAQ
onChange 时如何获得父节点信息?
自定义 Option 样式导致滚动异常怎么办?
为何在搜索时 loadData 不会触发展开?
为何弹出框不能横向滚动?

TreeSelect
树选择

树型选择控件。
使用import { TreeSelect } from 'antd';
反馈
components/tree-select提交问题待解决
文档
编辑此页LLMs.md
文档贡献者
    Transfer穿梭框Upload上传

    相关资源

    Ant Design X
    Ant Design Charts
    Ant Design Pro
    Pro Components
    Ant Design Mobile
    Ant Design Mini
    Ant Design Web3
    Ant Design Landing-首页模板集
    Scaffolds-脚手架市场
    Umi-React 应用开发框架
    dumi-组件/文档研发工具
    qiankun-微前端框架
    Ant Motion-设计动效
    国内镜像站点 🇨🇳

    社区

    Awesome Ant Design
    Medium
    X
    yuque logoAnt Design 语雀专栏
    Ant Design 知乎专栏
    体验科技专栏
    seeconf logoSEE Conf-蚂蚁体验科技大会
    加入我们

    帮助

    GitHub
    更新日志
    常见问题
    报告 Bug
    议题
    讨论区
    StackOverflow
    SegmentFault

    Ant XTech logo更多产品

    yuque logo语雀-构建你的数字花园
    AntV logoAntV-数据可视化解决方案
    Egg logoEgg-企业级 Node.js 框架
    Kitchen logoKitchen-Sketch 工具集
    Galacean logoGalacean-互动图形解决方案
    WeaveFox logoWeaveFox-前端智能研发
    xtech logo蚂蚁体验科技
    主题编辑器
    Made with ❤ by
    蚂蚁集团和 Ant Design 开源社区
    loading

    何时使用

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

    代码演示

    API

    通用属性参考:通用属性

    Tree props

    参数说明类型默认值版本
    allowClear自定义清除按钮boolean | { clearIcon?: ReactNode }false5.8.0: 支持对象形式
    autoClearSearchValue当多选模式下值被选择,自动清空搜索框booleantrue
    bordered是否带边框,请使用 variant 替代booleantrue-
    classNames用于自定义组件内部各语义化结构的 class,支持对象或函数Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-
    defaultOpen是否默认展开下拉菜单boolean-
    defaultValue指定默认选中的条目string | string[]-
    disabled是否禁用booleanfalse
    dropdownClassName下拉菜单的 className 属性,请使用 classNames.popup.root 替代string--
    dropdownMatchSelectWidth下拉菜单和选择器是否同宽,请使用 popupMatchSelectWidth 替代boolean | numbertrue-
    popupClassName下拉菜单的 className 属性,使用 classNames.popup.root 替换string-4.23.0
    popupMatchSelectWidth下拉菜单和选择器同宽。默认将设置 min-width,当值小于选择框宽度时会被忽略。false 时会关闭虚拟滚动boolean | numbertrue5.5.0
    dropdownRender自定义下拉框内容,使用 popupRender 替换(originNode: ReactNode, props) => ReactNode-
    popupRender自定义下拉框内容(originNode: ReactNode, props) => ReactNode-
    dropdownStyle下拉菜单的样式,使用 styles.popup.root 替换object-
    fieldNames自定义节点 label、value、children 的字段object{ label: label, value: value, children: children }4.17.0
    filterTreeNode是否根据输入项进行筛选,默认用 treeNodeFilterProp 的值作为要筛选的 TreeNode 的属性值boolean | function(inputValue: string, treeNode: TreeNode) (函数需要返回 bool 值)function
    getPopupContainer菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。示例function(triggerNode)() => document.body
    labelInValue是否把每个选项的 label 包装到 value 中,会把 value 类型从 string 变为 {value: string, label: ReactNode, halfChecked: boolean(选项列表是否为半选状态,并且不会展示到值中) } 的格式booleanfalse
    listHeight设置弹窗滚动高度number256
    loadData异步加载数据。在过滤时不会调用以防止网络堵塞,可参考 FAQ 获得更多内容function(node)-
    maxCount指定可选中的最多 items 数量,仅在 multiple=true 时生效。如果此时 (showCheckedStrategy = 'SHOW_ALL' 且未开启 treeCheckStrictly),或使用 showCheckedStrategy = 'SHOW_PARENT',则maxCount无效。number-5.23.0
    maxTagCount最多显示多少个 tag,响应式模式会对性能产生损耗number | responsive-responsive: 4.10
    maxTagPlaceholder隐藏 tag 时显示的内容ReactNode | function(omittedValues)-
    maxTagTextLength最大显示的 tag 文本长度number-
    multiple支持多选(当设置 treeCheckable 时自动变为 true)booleanfalse
    notFoundContent当下拉列表为空时显示的内容ReactNodeNot Found
    open是否展开下拉菜单boolean-
    placeholder选择框默认文字string-
    placement选择框弹出的位置bottomLeft bottomRight topLeft topRightbottomLeft
    prefix自定义前缀ReactNode-5.22.0
    searchValue搜索框的值,可以通过 onSearch 获取用户输入string-
    showArrow是否显示箭头图标,请使用 suffixIcon={null} 替代booleantrue-
    showCheckedStrategy配置 treeCheckable 时,定义选中项回填的方式。TreeSelect.SHOW_ALL: 显示所有选中节点(包括父节点)。TreeSelect.SHOW_PARENT: 只显示父节点(当父节点下所有子节点都选中时)。 默认只显示子节点TreeSelect.SHOW_ALL | TreeSelect.SHOW_PARENT | TreeSelect.SHOW_CHILDTreeSelect.SHOW_CHILD
    showSearch是否支持搜索框boolean | Object单选:false | 多选:true
    size选择框大小large | medium | small-
    status设置校验状态'error' | 'warning'-4.19.0
    styles用于自定义组件内部各语义化结构的行内 style,支持对象或函数Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-
    suffixIcon自定义的选择框后缀图标ReactNode<DownOutlined />
    switcherIcon自定义树节点的展开/折叠图标ReactNode | ((props: AntTreeNodeProps) => ReactNode)-renderProps: 4.20.0
    tagRender自定义 tag 内容,多选时生效(props) => ReactNode-
    treeCheckable显示 Checkboxbooleanfalse
    treeCheckStrictlycheckable 状态下节点选择完全受控(父子节点选中状态不再关联),会使得 labelInValue 强制为 truebooleanfalse
    treeDatatreeNodes 数据,如果设置则不需要手动构造 TreeNode 节点(value 在整个树范围内唯一)array<{value, title, children, [disabled, disableCheckbox, selectable, checkable]}>[]
    treeDataSimpleMode使用简单格式的 treeData,具体设置参考可设置的类型 (此时 treeData 应变为这样的数据结构: [{id:1, pId:0, value:'1', title:"test1",...},...], pId 是父节点的 id)boolean | object<{ id: string, pId: string, rootPId: string }>false
    treeDefaultExpandAll默认展开所有树节点booleanfalse
    treeDefaultExpandedKeys默认展开的树节点string[]-
    treeExpandAction点击节点 title 时的展开逻辑,可选:false | click | doubleClickstring | booleanfalse4.21.0
    treeExpandedKeys设置展开的树节点string[]-
    treeIcon是否展示 TreeNode title 前的图标,没有默认样式,如设置为 true,需要自行定义图标相关样式booleanfalse
    treeLine是否展示线条样式,请参考 Tree - showLineboolean | objectfalse4.17.0
    treeLoadedKeys(受控)已经加载的节点,需要配合 loadData 使用string[][]
    treeNodeFilterProp输入项过滤对应的 treeNode 属性stringvalue
    treeNodeLabelProp作为显示的 prop 设置stringtitle
    treeTitleRender自定义渲染节点(nodeData) => ReactNode-5.12.0
    value指定当前选中的条目string | string[]-
    variant形态变体outlined | borderless | filled | underlinedoutlined5.13.0 | underlined: 5.24.0
    virtual设置 false 时关闭虚拟滚动booleantrue4.1.0
    onChange选中树节点时调用此函数function(value, label, extra)-
    onDropdownVisibleChange展开下拉菜单的回调,使用 onOpenChange 替换(open: boolean) => void-
    onOpenChange展开下拉菜单的回调(open: boolean) => void-
    onPopupScroll下拉列表滚动时的回调(event: UIEvent) => void-5.17.0
    onSearch文本框值变化时的回调function(value: string)-
    onSelect被选中时调用function(value, node, extra)-
    onTreeExpand展示节点时调用function(expandedKeys)-

    showSearch

    参数说明类型默认值版本
    autoClearSearchValue当多选模式下值被选择,自动清空搜索框booleantrue
    filterTreeNode是否根据输入项进行筛选,默认用 treeNodeFilterProp 的值作为要筛选的 TreeNode 的属性值boolean | function(inputValue: string, treeNode: TreeNode) (函数需要返回 bool 值)function
    searchValue搜索框的值,可以通过 onSearch 获取用户输入string-
    treeNodeFilterProp输入项过滤对应的 treeNode 属性stringvalue
    onSearch文本框值变化时的回调function(value: string)-

    Tree 方法

    名称描述版本
    blur()移除焦点
    focus()获取焦点

    TreeNode props

    建议使用 treeData 来代替 TreeNode,免去手动构造的麻烦

    参数说明类型默认值版本
    checkable当树为 Checkbox 时,设置独立节点是否展示 Checkboxboolean-
    disableCheckbox禁掉 Checkboxbooleanfalse
    disabled是否禁用booleanfalse
    isLeaf是否是叶子节点booleanfalse
    key此项必须设置(其值在整个树范围内唯一)string-
    selectable是否可选booleantrue
    title树节点显示的内容ReactNode---
    value默认根据此属性值进行筛选(其值在整个树范围内唯一)string-

    Semantic DOM

    prefix
    Please select
    • root
      根元素,设置树选择器的基础样式、边框、圆角容器样式
    • prefix
      前缀元素,设置前缀内容的布局和样式
    • placeholder
      占位符元素,包含占位符文本的字体样式和颜色
    • input
      输入框元素,设置文本输入、搜索、选择值显示等输入框的核心交互样式
    • suffix
      后缀元素,设置后缀内容、清除按钮、下拉箭头等后缀区域的样式
    • popup.root
      弹出菜单元素,设置下拉树形选择面板的定位、层级、背景、边框、阴影等弹层样式
    • popup.item
      弹出菜单条目元素,设置树节点选项的样式、悬停态、选中态等交互状态
    • popup.itemTitle
      弹出菜单标题元素,设置树节点标题文字的显示样式
    • popup.itemSwitcher
      6.4.0
      弹出菜单切换器元素,设置树节点展开/收起按钮的样式和背景

    主题变量(Design Token)

    组件 Token如何定制?
    Token 名称描述类型默认值
    indentSize缩进宽度number24
    nodeHoverBg节点悬浮态背景色stringrgba(0,0,0,0.04)
    nodeHoverColor节点悬浮态态文字颜色stringrgba(0,0,0,0.88)
    nodeSelectedBg节点选中态背景色string#e6f4ff
    nodeSelectedColor节点选中态文字颜色stringrgba(0,0,0,0.88)
    switcherSize展开按钮宽度number24
    titleHeight节点标题高度number24
    全局 Token如何定制?
    Token 名称描述类型默认值
    colorBgContainer组件的容器背景色,例如:默认按钮、输入框等。务必不要将其与 `colorBgElevated` 混淆。string#ffffff
    colorBgContainerDisabled控制容器在禁用状态下的背景色。stringrgba(0,0,0,0.04)
    colorBgElevated浮层容器背景色,在暗色模式下该 token 的色值会比 `colorBgContainer` 要亮一些。例如:模态框、弹出框、菜单等。string#ffffff
    colorBgTextHover控制文本在悬停状态下的背景色。stringrgba(0,0,0,0.06)
    colorBorder默认使用的边框颜色, 用于分割不同的元素,例如:表单的分割线、卡片的分割线等。string#d9d9d9
    colorPrimary品牌色是体现产品特性和传播理念最直观的视觉元素之一。在你完成品牌主色的选取之后,我们会自动帮你生成一套完整的色板,并赋予它们有效的设计语义string#1677ff
    colorPrimaryBorder主色梯度下的描边用色,用在 Slider 等组件的描边上。string#91caff
    colorPrimaryHover主色梯度下的悬浮态。string#4096ff
    colorSplit用于作为分割线的颜色,此颜色和 colorBorderSecondary 的颜色一致,但是用的是透明色。stringrgba(5,5,5,0.06)
    colorText最深的文本色。为了符合W3C标准,默认的文本颜色使用了该色,同时这个颜色也是最深的中性色。stringrgba(0,0,0,0.88)
    colorTextDisabled控制禁用状态下的字体颜色。stringrgba(0,0,0,0.25)
    colorTextQuaternary第四级文本色是最浅的文本色,例如表单的输入提示文本、禁用色文本等。stringrgba(0,0,0,0.25)
    colorWhite不随主题变化的纯白色string#fff
    borderRadius基础组件的圆角大小,例如按钮、输入框、卡片等number6
    borderRadiusSMSM号圆角,用于组件小尺寸下的圆角,如 Button、Input、Select 等输入类控件在 small size 下的圆角number4
    controlInteractiveSize控制组件的交互大小。number16
    controlItemBgActiveDisabled控制组件项在禁用状态下的激活背景颜色。stringrgba(0,0,0,0.15)
    controlItemBgHover控制组件项在鼠标悬浮时的背景颜色。stringrgba(0,0,0,0.04)
    fontFamilyAnt Design 的字体家族中优先使用系统默认的界面字体,同时提供了一套利于屏显的备用字体库,来维护在不同平台以及浏览器的显示下,字体始终保持良好的易读性和可读性,体现了友好、稳定和专业的特性。string-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'
    fontSize设计系统中使用最广泛的字体大小,文本梯度也将基于该字号进行派生。number14
    fontSizeLG大号字体大小number16
    fontWeightStrong控制标题类组件(如 h1、h2、h3)或选中项的字体粗细。number600
    lineHeight文本行高number1.5714285714285714
    lineType用于控制组件边框、分割线等的样式,默认是实线stringsolid
    lineWidth用于控制组件边框、分割线等的宽度number1
    lineWidthBold描边类组件的默认线宽,如 Button、Input、Select 等输入类控件。number2
    lineWidthFocus控制线条的宽度,当组件处于聚焦态时。number3
    marginXS控制元素外边距,小尺寸。number8
    motionDurationFast动效播放速度,快速。用于小型元素动画交互string0.1s
    motionDurationMid动效播放速度,中速。用于中型元素动画交互string0.2s
    motionDurationSlow动效播放速度,慢速。用于大型元素如面板动画交互string0.3s
    motionEaseInBack预设动效曲率string
    Cubic Bezier Visualizer
    cubic-bezier(0.71, -0.46, 0.88, 0.6)External Link Icon
    motionEaseOutBack预设动效曲率string
    Cubic Bezier Visualizer
    cubic-bezier(0.12, 0.4, 0.29, 1.46)External Link Icon
    paddingXS控制元素的特小内间距。number8

    FAQ

    onChange 时如何获得父节点信息?

    从性能角度考虑,我们默认不透出父节点信息。你可以这样获得:https://codesandbox.io/s/get-parent-node-in-onchange-eb1608

    自定义 Option 样式导致滚动异常怎么办?

    请参考 Select 的 FAQ。

    为何在搜索时 loadData 不会触发展开?

    在 v4 alpha 版本中,默认在搜索时亦会进行搜索。但是经反馈,在输入时会快速阻塞网络。因而改为搜索不触发 loadData。但是你仍然可以通过 filterTreeNode 处理异步加载逻辑:

    tsx
    <TreeSelect
    filterTreeNode={(input, treeNode) => {
    const match = YOUR_LOGIC_HERE;
    if (match && !treeNode.isLeaf && !treeNode.children) {
    // Do some loading logic
    }
    return match;
    }}
    />

    为何弹出框不能横向滚动?

    关闭虚拟滚动即可,因为开启虚拟滚动时无法准确的测量完整列表的 scrollWidth。

    Please select
    基本

    最简单的用法。

    CodeSandbox Icon
    Hitu Icon
    codepen icon
    External Link Icon
    Expand Icon
    Please select
    从数据直接生成

    使用 treeData 把 JSON 数据直接生成树结构。

    CodeSandbox Icon
    Hitu Icon
    codepen icon
    External Link Icon
    Expand Icon
    Please select
    异步加载

    异步加载树节点。

    CodeSandbox Icon
    Hitu Icon
    codepen icon
    External Link Icon
    Expand Icon


    Please select
    弹出位置

    可以通过 placement 手动指定弹出的位置。

    CodeSandbox Icon
    Hitu Icon
    codepen icon
    External Link Icon
    Expand Icon
    Error
    Warning multiple
    自定义状态

    使用 status 为 TreeSelect 添加状态,可选 error 或者 warning。

    CodeSandbox Icon
    Hitu Icon
    codepen icon
    External Link Icon
    Expand Icon
    Please select


    Prefix
    Please select
    前后缀

    自定义前缀 prefix 和后缀图标 suffixIcon。

    CodeSandbox Icon
    Hitu Icon
    codepen icon
    External Link Icon
    Expand Icon
    5.22.0
    Please select
    多选

    多选的树选择。

    CodeSandbox Icon
    Hitu Icon
    codepen icon
    External Link Icon
    Expand Icon
    Node1
    可勾选

    使用勾选框实现多选功能。

    CodeSandbox Icon
    Hitu Icon
    codepen icon
    External Link Icon
    Expand Icon
    线性样式

    通过 treeLine 配置线性样式。

    CodeSandbox Icon
    Hitu Icon
    codepen icon
    External Link Icon
    Expand Icon
    Please select
    Please select
    Please select
    Please select
    形态变体

    TreeSelect 形态变体,可选 outlined filled borderless underlined 四种形态。

    CodeSandbox Icon
    codepen icon
    External Link Icon
    Expand Icon
    5.13.0
    Child 1-1
    1 / 3
    最大选中数量

    你可以通过设置 maxCount 约束最多可选中的数量,当超出限制时会变成禁止选中状态。

    CodeSandbox Icon
    Hitu Icon
    codepen icon
    External Link Icon
    Expand Icon
    5.23.0
    Object
    Function
    自定义语义结构的样式和类

    通过 classNames 和 styles 传入对象/函数可以自定义 TreeSelect 的语义化结构样式。

    CodeSandbox Icon
    Hitu Icon
    codepen icon
    External Link Icon
    Expand Icon
    6.0.0
    Hitu Icon