logoAnt Design

⌘ K
  • Design
  • Development
  • Components
  • Blog
  • Resources
YouMindTRACTIANLobeHubCodeRabbit
6.4.5
  • Components Overview
  • Changelog
    v6.4.5
  • General
    • Button
    • FloatButton
    • Icon
    • Typography
  • Layout
    • Divider
    • Flex
    • Grid
    • Layout
    • Masonry
      6.0.0
    • Space
    • Splitter
  • Navigation
    • Anchor
    • Breadcrumb
    • Dropdown
    • Menu
    • Pagination
    • Steps
    • Tabs
  • Data Entry
    • AutoComplete
    • Cascader
    • Checkbox
    • ColorPicker
    • DatePicker
    • Form
    • Input
    • InputNumber
    • Mentions
    • Radio
    • Rate
    • Select
    • Slider
    • Switch
    • TimePicker
    • Transfer
    • TreeSelect
    • Upload
  • Data Display
    • Avatar
    • Badge
    • Calendar
    • Card
    • Carousel
    • Collapse
    • Descriptions
    • Empty
    • Image
    • List
      DEPRECATED
    • Popover
    • QRCode
    • Segmented
    • Statistic
    • Table
    • Tag
    • Timeline
    • Tooltip
    • Tour
    • Tree
  • Feedback
    • Alert
    • Drawer
    • Message
    • Modal
    • Notification
    • Popconfirm
    • Progress
    • Result
    • Skeleton
    • Spin
    • Watermark
  • Other
    • Affix
    • App
    • BorderBeam
      6.4.0
    • ConfigProvider
    • Util
When To Use
Examples
Basic
Multiple Selection
Generate from tree data
Checkable
Asynchronous loading
Show Tree Line
Placement
Variants
Status
Max Count
Prefix and Suffix
Custom semantic dom styling
API
Tree props
showSearch
Tree Methods
TreeNode props
Semantic DOM
Design Token
FAQ
How to get parent node in onChange?
Why sometimes customize Option cause scroll break?
Why loadData not trigger when searching?
Why can't popup scroll horizontally?

TreeSelect

Tree selection control.
Importimport { TreeSelect } from 'antd';
GitHub
components/tree-selectIssueOpen issues
Docs
Edit this pageLLMs.md
TransferUpload

Resources

Ant Design X
Ant Design Charts
Ant Design Pro
Pro Components
Ant Design Mobile
Ant Design Mini
Ant Design Web3
Ant Design Landing-Landing Templates
Scaffolds-Scaffold Market
Umi-React Application Framework
dumi-Component doc generator
qiankun-Micro-Frontends Framework
Ant Motion-Motion Solution
China Mirror 🇨🇳

Community

Awesome Ant Design
Medium
X
yuque logoAnt Design in YuQue
Ant Design in Zhihu
Experience Cloud Blog
seeconf logoSEE Conf-Experience Tech Conference

Help

GitHub
Change Log
FAQ
For Agents
Bug Report
Issues
Discussions
StackOverflow
SegmentFault

Ant XTech logoMore Products

yuque logoYuQue-Document Collaboration Platform
AntV logoAntV-Data Visualization
Egg logoEgg-Enterprise Node.js Framework
Kitchen logoKitchen-Sketch Toolkit
Galacean logoGalacean-Interactive Graphics Solution
WeaveFox logoWeaveFox-AI Development with WeaveFox 🦊
xtech logoAnt Financial Experience Tech
Theme Editor
Made with ❤ by
Ant Group and Ant Design Community
loading

When To Use

TreeSelect is similar to Select, but the values are provided in a tree like structure. Any data whose entries are defined in a hierarchical manner is fit to use this control. Examples of such case may include a corporate hierarchy, a directory structure, and so on.

Examples

API

Common props ref:Common props

Tree props

PropertyDescriptionTypeDefaultVersionGlobal Config
allowClearCustomize clear iconboolean | { clearIcon?: ReactNode }false5.8.0: Support object type×
autoClearSearchValueIf auto clear search input value when multiple select is selected/deselectedbooleantrue×
borderedWhether has border style, please use variant insteadbooleantrue-×
classNamesCustomize class for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-5.25.0
defaultOpenInitial open state of dropdownboolean-×
defaultValueTo set the initial selected treeNode(s)string | string[]-×
disabledDisabled or notbooleanfalse×
dropdownClassNameThe className of dropdown menu, please use classNames.popup.root insteadstring--×
dropdownMatchSelectWidthDetermine whether the popup menu and the select input are the same width, please use popupMatchSelectWidth insteadboolean | numbertrue-×
popupClassNameThe className of dropdown menu, use classNames.popup.root insteadstring-4.23.0×
popupMatchSelectWidthDetermine whether the popup menu and the select input are the same width. Default set min-width same as input. Will ignore when value less than select width. false will disable virtual scrollboolean | numbertrue5.5.0×
dropdownRenderCustomize dropdown content, use popupRender instead(originNode: ReactNode, props) => ReactNode-×
popupRenderCustomize dropdown content(originNode: ReactNode, props) => ReactNode-×
dropdownStyleTo set the style of the dropdown menu, use styles.popup.root insteadCSSProperties-×
fieldNamesCustomize node label, value, children field nameobject{ label: label, value: value, children: children }4.17.0×
filterTreeNodeWhether to filter treeNodes by input value. The value of treeNodeFilterProp is used for filtering by defaultboolean | function(inputValue: string, treeNode: TreeNode) (should return boolean)function×
getPopupContainerTo set the container of the dropdown menu. The default is to create a div element in body, you can reset it to the scrolling area and make a relative reposition. examplefunction(triggerNode)() => document.body×
labelInValueWhether to embed label in value, turn the format of value from string to {value: string, label: ReactNode, halfChecked: boolean (Is the option list in a semi selected state and not displayed in the values)}booleanfalse×
listHeightConfig popup heightnumber256×
loadDataLoad data asynchronously. Will not load when filtering. Check FAQ for more infofunction(node)-×
maxCountThe maximum number of items that can be selected. Only takes effect when multiple=true. If (showCheckedStrategy = 'SHOW_ALL' and treeCheckStrictly is disabled) or showCheckedStrategy = 'SHOW_PARENT' is used, maxCount will not take effect.number-5.23.0×
maxTagCountMax tag count to show. responsive will cost render performancenumber | responsive-responsive: 4.10×
maxTagPlaceholderPlaceholder for not showing tagsReactNode | function(omittedValues)-×
maxTagTextLengthMax tag text length to shownumber-×
multipleSupport multiple or not, will be true when enable treeCheckablebooleanfalse×
notFoundContentSpecify content to show when no result matchesReactNodeNot Found×
openControlled open state of dropdownboolean-×
placeholderPlaceholder of the select inputstring-×
placementThe position where the selection box pops upbottomLeft bottomRight topLeft topRightbottomLeft×
prefixThe custom prefixReactNode-5.22.0×
searchValueWork with onSearch to make search value controlledstring-×
showArrowWhether to show the arrow icon, please use suffixIcon={null} insteadbooleantrue-×
showCheckedStrategyThe way show selected item in box when treeCheckable set. Default: just show child nodes. TreeSelect.SHOW_ALL: show all checked treeNodes (include parent treeNode). TreeSelect.SHOW_PARENT: show checked treeNodes (just show parent treeNode)TreeSelect.SHOW_ALL | TreeSelect.SHOW_PARENT | TreeSelect.SHOW_CHILDTreeSelect.SHOW_CHILD×
showSearchSupport search or notboolean | Objectsingle: false | multiple: true×
sizeTo set the size of the select inputlarge | medium | small-×
statusSet validation status'error' | 'warning'-4.19.0×
stylesCustomize inline style for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-5.25.0
suffixIconThe custom suffix iconReactNode<DownOutlined />×
switcherIconCustomize collapse/expand icon of tree nodeReactNode | ((props: AntTreeNodeProps) => ReactNode)-renderProps: 4.20.05.28.0
tagRenderCustomize tag render when multiple(props) => ReactNode-×
treeCheckableWhether to show checkbox on the treeNodesbooleanfalse×
treeCheckStrictlyWhether to check nodes precisely (in the checkable mode), means parent and child nodes are not associated, and it will make labelInValue be truebooleanfalse×
treeDataData of the treeNodes, manual construction work is no longer needed if this property has been set(ensure the Uniqueness of each value)array<{ value, title, children, [disabled, disableCheckbox, selectable, checkable] }>[]×
treeDataSimpleModeEnable simple mode of treeData. Changes the treeData schema to: [{id:1, pId:0, value:'1', title:"test1",...},...] where pId is parent node's id). It is possible to replace the default id and pId keys by providing object to treeDataSimpleModeboolean | object<{ id: string, pId: string, rootPId: string }>false×
treeDefaultExpandAllWhether to expand all treeNodes by defaultbooleanfalse×
treeDefaultExpandedKeysDefault expanded treeNodesstring[]-×
treeExpandActionTree title open logic when click, optional: false | click | doubleClickstring | booleanfalse4.21.0×
treeExpandedKeysSet expanded keysstring[]-×
treeIconShows the icon before a TreeNode's title. There is no default style; you must set a custom style for it if set to truebooleanfalse×
treeLineShow the line. Ref Tree - showLineboolean | objectfalse4.17.0×
treeLoadedKeys(Controlled) Set loaded tree nodes, work with loadData onlystring[][]×
treeNodeFilterPropWill be used for filtering if filterTreeNode returns truestringvalue×
treeNodeLabelPropWill render as content of selectstringtitle×
treeTitleRenderCustomize tree node title render(nodeData) => ReactNode-5.12.0×
valueTo set the current selected treeNode(s)string | string[]-×
variantVariants of selectoroutlined | borderless | filled | underlinedoutlined5.13.0 | underlined: 5.24.05.19.0
virtualDisable virtual scroll when set to falsebooleantrue4.1.0×
onChangeA callback function, can be executed when selected treeNodes or input value changefunction(value, label, extra)-×
onClearCalled when clear() => void--×
onDropdownVisibleChangeCalled when dropdown open, use onOpenChange insteadfunction(open)-×
onOpenChangeCalled when dropdown open(open: boolean) => void-×
onPopupScrollCalled when dropdown scrolls(event: UIEvent) => void-5.17.0×
onSearchA callback function, can be executed when the search input changesfunction(value: string)-×
onSelectA callback function, can be executed when you select a treeNodefunction(value, node, extra)-×
onTreeExpandA callback function, can be executed when treeNode expandedfunction(expandedKeys)-×

showSearch

PropertyDescriptionTypeDefaultVersion
autoClearSearchValueIf auto clear search input value when multiple select is selected/deselectedbooleantrue
filterTreeNodeWhether to filter treeNodes by input value. The value of treeNodeFilterProp is used for filtering by defaultboolean | function(inputValue: string, treeNode: TreeNode) (should return boolean)function
searchValueWork with onSearch to make search value controlledstring-
treeNodeFilterPropWill be used for filtering if filterTreeNode returns truestringvalue
onSearchA callback function, can be executed when the search input changesfunction(value: string)-

Tree Methods

NameDescriptionVersion
blur()Remove focus
focus()Get focus

TreeNode props

We recommend you to use treeData rather than TreeNode, to avoid the trouble of manual construction.

PropertyDescriptionTypeDefaultVersion
checkableWhen Tree is checkable, set TreeNode display Checkbox or notboolean-
disableCheckboxDisables the checkbox of the treeNodebooleanfalse
disabledDisabled or notbooleanfalse
isLeafLeaf node or notbooleanfalse
keyRequired property (unless using treeDataSimpleMode), should be unique in the treestring-
selectableWhether can be selectedbooleantrue
titleContent showed on the treeNodesReactNode---
valueWill be treated as treeNodeFilterProp by default, should be unique in the treestring-

Semantic DOM

Design Token

Component TokenHow to use?
Token NameDescriptionTypeDefault Value
indentSizeIndent width of treenumber24
nodeHoverBgBackground color of hovered nodestringrgba(0,0,0,0.04)
nodeHoverColorText color of hovered nodestringrgba(0,0,0,0.88)
nodeSelectedBgBackground color of selected nodestring#e6f4ff
nodeSelectedColorText color of selected nodestringrgba(0,0,0,0.88)
switcherSizeSwitcher width of treenumber24
titleHeightNode title heightnumber24
Global TokenHow to use?
Token NameDescriptionTypeDefault Value
colorBgContainerContainer background color, e.g: default button, input box, etc. Be sure not to confuse this with `colorBgElevated`.string#ffffff
colorBgContainerDisabledControl the background color of container in disabled state.stringrgba(0,0,0,0.04)
colorBgElevatedContainer background color of the popup layer, in dark mode the color value of this token will be a little brighter than `colorBgContainer`. E.g: modal, pop-up, menu, etc.string#ffffff
colorBgTextHoverControl the background color of text in hover state.stringrgba(0,0,0,0.06)
colorBorderDefault border color, used to separate different elements, such as: form separator, card separator, etc.string#d9d9d9
colorPrimaryBrand color is one of the most direct visual elements to reflect the characteristics and communication of the product. After you have selected the brand color, we will automatically generate a complete color palette and assign it effective design semantics.string#1677ff
colorPrimaryBorderThe stroke color under the main color gradient, used on the stroke of components such as Slider.string#91caff
colorPrimaryHoverHover state under the main color gradient.string#4096ff
colorSplitUsed as the color of separator, this color is the same as colorBorderSecondary but with transparency.stringrgba(5,5,5,0.06)
colorTextDefault text color which comply with W3C standards, and this color is also the darkest neutral color.stringrgba(0,0,0,0.88)
colorTextDisabledControl the color of text in disabled state.stringrgba(0,0,0,0.25)
colorTextQuaternaryThe fourth level of text color is the lightest text color, such as form input prompt text, disabled color text, etc.stringrgba(0,0,0,0.25)
colorWhitePure white color don't changed by themestring#fff
borderRadiusBorder radius of base componentsnumber6
borderRadiusSMSM size border radius, used in small size components, such as Button, Input, Select and other input components in small sizenumber4
controlInteractiveSizeControl the interactive size of control component.number16
controlItemBgActiveDisabledControl the background color of control component item when active and disabled.stringrgba(0,0,0,0.15)
controlItemBgHoverControl the background color of control component item when hovering.stringrgba(0,0,0,0.04)
fontFamilyThe font family of Ant Design prioritizes the default interface font of the system, and provides a set of alternative font libraries that are suitable for screen display to maintain the readability and readability of the font under different platforms and browsers, reflecting the friendly, stable and professional characteristics.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'
fontSizeThe most widely used font size in the design system, from which the text gradient will be derived.number14
fontSizeLGLarge font sizenumber16
fontWeightStrongControl the font weight of heading components (such as h1, h2, h3) or selected item.number600
lineHeightLine height of text.number1.5714285714285714
lineTypeBorder style of base componentsstringsolid
lineWidthBorder width of base componentsnumber1
lineWidthBoldThe default line width of the outline class components, such as Button, Input, Select, etc.number2
lineWidthFocusControl the width of the line when the component is in focus state.number3
marginXSControl the margin of an element, with a small size.number8
motionDurationFastMotion speed, fast speed. Used for small element animation interaction.string0.1s
motionDurationMidMotion speed, medium speed. Used for medium element animation interaction.string0.2s
motionDurationSlowMotion speed, slow speed. Used for large element animation interaction.string0.3s
motionEaseInBackPreset motion curve.string
Cubic Bezier Visualizer
cubic-bezier(0.71, -0.46, 0.88, 0.6)External Link Icon
motionEaseOutBackPreset motion curve.string
Cubic Bezier Visualizer
cubic-bezier(0.12, 0.4, 0.29, 1.46)External Link Icon
paddingXSControl the extra small padding of the element.number8

FAQ

How to get parent node in onChange?

We don't provide this since performance consideration. You can get by this way: https://codesandbox.io/s/get-parent-node-in-onchange-eb1608

Why sometimes customize Option cause scroll break?

You can ref Select FAQ.

Why loadData not trigger when searching?

In earlier version, loadData will be triggered when searching. But we got feedback that it will block network when inputting. So we change it to not trigger loadData when searching. But you can still handle async logic by filterTreeNode:

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

Why can't popup scroll horizontally?

Just turn off virtual scrolling, because the scrollWidth of the complete list cannot be accurately measured when virtual scrolling is turned on.

Basic

The most basic usage.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Generate from tree data

The tree structure can be populated using treeData property. This is a quick and easy way to provide the tree content.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Asynchronous loading

Asynchronous loading tree node.

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

You can manually specify the position of the popup via placement.

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

Add status to TreeSelect with status, which could be error or warning.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Prefix and Suffix

Custom prefix and suffixIcon.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
5.22.0
Multiple Selection

Multiple selection usage.

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

Multiple and checkable.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Show Tree Line

Use treeLine to show the line style.

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

Variants of TreeSelect, there are four variants: outlined filled borderless and underlined.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
5.13.0
Max Count

You can set the maxCount prop to control the max number of items can be selected. When the limit is exceeded, the options will become disabled.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
5.23.0
Custom semantic dom styling

You can customize the semantic dom style of TreeSelect by passing objects/functions through classNames and styles.

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


Please select
Error
Warning multiple
Please select


Prefix
Please select
Please select
Node1
Please select
Please select
Please select
Please select
Child 1-1
1 / 3
Object
Function
prefix
Please select
  • root
    Root element with tree selector base styles, border, border radius container styles
  • prefix
    Prefix element with prefix content layout and styles
  • placeholder
    Placeholder element with font styles and colors for placeholder text
  • input
    Input element with text input, search, selected value display and other input core interaction styles
  • suffix
    Suffix element with suffix content, clear button, dropdown arrow and other suffix area styles
  • popup.root
    Popup element with dropdown tree selection panel positioning, z-index, background, border, shadow and other popup layer styles
  • popup.item
    Popup item element with tree node option styles, hover state, selected state and other interaction states
  • popup.itemTitle
    Popup title element with tree node title text display styles
  • popup.itemSwitcher
    6.4.0
    Popup switcher element with tree node expand/collapse button styles and background