logoNamu Design

⌘ K
  • Design
  • Development
  • Components
  • Blog
  • Resources
1.0.0
  • Components Overview
  • General
    • Button
    • FloatButtonNew
    • Icon
    • Typography
  • Layout
    • Divider
    • Grid
    • Layout
    • Space
  • Navigation
    • Anchor
    • Breadcrumb
    • Dropdown
    • Menu
    • Pagination
    • Steps
  • Data Entry
    • AutoComplete
    • Cascader
    • Checkbox
    • ColorPickerNew
    • 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
    • Popover
    • QRCodeNew
    • Segmented
    • Statistic
    • Table
    • Tabs
    • Tag
    • Timeline
    • Tooltip
    • TourNew
    • Tree
  • Feedback
    • Alert
    • Drawer
    • Message
    • Modal
    • Notification
    • Popconfirm
    • Progress
    • Result
    • Skeleton
    • Spin
    • Watermark
  • Other
    • Affix
    • AppNew
    • ConfigProvider
When To Use
Examples
Basic
Multiple Selection
Generate from tree data
Checkable
Asynchronous loading
Show Tree Line
Placement
Status
API
Tree props
Tree Methods
TreeNode props
Design Token
FAQ
How to get parent node in onChange?
Why sometime customize Option cause scroll break?
Why loadData not trigger when searching?
Why can't popup scroll horizontally?

TreeSelect

  • TransferUpload

    Resources

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

    Community

    Awesome Namu Design
    Medium
    Twitter
    yuqueNamu Design in YuQue
    Namu Design in Zhihu
    Experience Cloud Blog
    seeconfSEE Conf-Experience Tech Conference

    Help

    GitHub
    Change Log
    FAQ
    Bug Report
    Issues
    Discussions
    StackOverflow
    SegmentFault

    Ant XTechMore Products

    yuqueYuQue-Document Collaboration Platform
    AntVAntV-Data Visualization
    EggEgg-Enterprise Node.js Framework
    kitchenKitchen-Sketch Toolkit
    xtechAnt Financial Experience Tech
    Theme Editor
    Made with ❤ by
    Ant Group and Namu Design Community

    Tree selection control.

    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

    Basic

    The most basic usage.

    expand codeexpand code
    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.

    expand codeexpand code
    Asynchronous loading

    Asynchronous loading tree node.

    expand codeexpand code
    Placement

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

    expand codeexpand code
    Multiple Selection

    Multiple selection usage.

    expand codeexpand code
    Checkable

    Multiple and checkable.

    expand codeexpand code
    Show Tree Line

    Use treeLine to show the line style.

    expand codeexpand code
    Status

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

    expand codeexpand code

    API

    Common props ref:Common props

    Tree props

    PropertyDescriptionTypeDefaultVersion
    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 stylebooleantrue
    defaultValueTo set the initial selected treeNode(s)string | string[]-
    disabledDisabled or notbooleanfalse
    popupClassNameThe className of dropdown menustring-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(originNode: ReactNode, props) => ReactNode-
    dropdownStyleTo set the style of the dropdown menuCSSProperties-
    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: string[]}booleanfalse
    listHeightConfig popup heightnumber256
    loadDataLoad data asynchronously. Will not load when filtering. Check FAQ for more infofunction(node)-
    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
    placeholderPlaceholder of the select inputstring-
    placementThe position where the selection box pops upbottomLeft bottomRight topLeft topRightbottomLeft
    searchValueWork with onSearch to make search value controlledstring-
    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 notbooleansingle: false | multiple: true
    sizeTo set the size of the select inputlarge | middle | small-
    statusSet validation status'error' | 'warning'-4.19.0
    suffixIconThe custom suffix iconReactNode<DownOutlined />
    switcherIconCustomize collapse/expand icon of tree nodeReactNode | ((props: AntTreeNodeProps) => ReactNode)-renderProps: 4.20.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
    treeLoadedKeys(Controlled) Set loaded tree nodes, work with loadData onlystring[][]
    treeLineShow the line. Ref Tree - showLineboolean | objectfalse4.17.0
    treeNodeFilterPropWill be used for filtering if filterTreeNode returns truestringvalue
    treeNodeLabelPropWill render as content of selectstringtitle
    valueTo set the current selected treeNode(s)string | string[]-
    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)-
    onDropdownVisibleChangeCalled when dropdown openfunction(open)-
    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)-

    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-

    Design Token

    Global Token

    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 sometime 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:

    <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.

    Please select
    Please select
    Please select


    Please select
     
    Please select
    Node1
     
    Error
     
    Warning multiple