logoAnt Design

⌘ K
  • Design
  • Development
  • Components
  • Blog
  • Resources
5.25.4
  • Components Overview
  • General
    • Button
    • FloatButton
      5.0.0
    • Icon
    • Typography
  • Layout
    • Divider
    • Flex
      5.10.0
    • Grid
    • Layout
    • Space
    • Splitter
      5.21.0
  • Navigation
    • Anchor
    • Breadcrumb
    • Dropdown
    • Menu
    • Pagination
    • Steps
    • Tabs
  • Data Entry
    • AutoComplete
    • Cascader
    • Checkbox
    • ColorPicker
      5.5.0
    • 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
    • QRCode
      5.1.0
    • Segmented
    • Statistic
    • Table
    • Tag
    • Timeline
    • Tooltip
    • Tour
      5.0.0
    • Tree
  • Feedback
    • Alert
    • Drawer
    • Message
    • Modal
    • Notification
    • Popconfirm
    • Progress
    • Result
    • Skeleton
    • Spin
    • Watermark
      5.1.0
  • Other
    • Affix
    • App
      5.1.0
    • ConfigProvider
    • Util
      5.13.0
When To Use
Examples
Basic
Controlled Tree
draggable
load data asynchronously
Searchable
Tree with line
Customize Icon
directory
Customize collapse/expand icon
Virtual scroll
Block Node
API
Tree props
TreeNode props
DirectoryTree props
Note
Tree Methods
Design Token
FAQ
Why defaultExpandAll not working on ajax data?
Virtual scroll limitation
What does disabled node work logic in the tree?

Tree

Multiple-level structure list.
Importimport { Tree } from "antd";
Sourcecomponents/tree
Docs
Edit this pageChangelog
contributors
  • TourAlert

    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
    Twitter
    yuque logoAnt Design in YuQue
    Ant Design in Zhihu
    Experience Cloud Blog
    seeconf logoSEE Conf-Experience Tech Conference

    Help

    GitHub
    Change Log
    FAQ
    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
    xtech logoAnt Financial Experience Tech
    Theme Editor
    Made with ❤ by
    Ant Group and Ant Design Community

    When To Use

    Almost anything can be represented in a tree structure. Examples include directories, organization hierarchies, biological classifications, countries, etc. The Tree component is a way of representing the hierarchical relationship between these things. You can also expand, collapse, and select a treeNode within a Tree.

    Examples

    API

    Common props ref:Common props

    Tree props

    PropertyDescriptionTypeDefaultVersion
    allowDropWhether to allow dropping on the node({ dropNode, dropPosition }) => boolean-
    autoExpandParentWhether to automatically expand a parent treeNodebooleanfalse
    blockNodeWhether treeNode fill remaining horizontal spacebooleanfalse
    checkableAdd a Checkbox before the treeNodesbooleanfalse
    checkedKeys(Controlled) Specifies the keys of the checked treeNodes (PS: When this specifies the key of a treeNode which is also a parent treeNode, all the children treeNodes of will be checked; and vice versa, when it specifies the key of a treeNode which is a child treeNode, its parent treeNode will also be checked. When checkable and checkStrictly is true, its object has checked and halfChecked property. Regardless of whether the child or parent treeNode is checked, they won't impact each otherstring[] | {checked: string[], halfChecked: string[]}[]
    checkStrictlyCheck treeNode precisely; parent treeNode and children treeNodes are not associatedbooleanfalse
    defaultCheckedKeysSpecifies the keys of the default checked treeNodesstring[][]
    defaultExpandAllWhether to expand all treeNodes by defaultbooleanfalse
    defaultExpandedKeysSpecify the keys of the default expanded treeNodesstring[][]
    defaultExpandParentIf auto expand parent treeNodes when initbooleantrue
    defaultSelectedKeysSpecifies the keys of the default selected treeNodesstring[][]
    disabledWhether disabled the treebooleanfalse
    draggableSpecifies whether this Tree or the node is draggable. Use icon: false to disable drag handler iconboolean | ((node: DataNode) => boolean) | { icon?: React.ReactNode | false, nodeDraggable?: (node: DataNode) => boolean }falseconfig: 4.17.0
    expandedKeys(Controlled) Specifies the keys of the expanded treeNodesstring[][]
    fieldNamesCustomize node title, key, children field nameobject{ title: title, key: key, children: children }4.17.0
    filterTreeNodeDefines a function to filter (highlight) treeNodes. When the function returns true, the corresponding treeNode will be highlightedfunction(node)-
    heightConfig virtual scroll height. Will not support horizontal scroll when enable thisnumber-
    iconInsert a custom icon before the title. Need to set showIcon to trueReactNode | (props) => ReactNode-
    loadDataLoad data asynchronouslyfunction(node)-
    loadedKeys(Controlled) Set loaded tree nodes. Need work with loadDatastring[][]
    multipleAllows selecting multiple treeNodesbooleanfalse
    rootStyleStyle on the root elementCSSProperties-4.20.0
    selectableWhether can be selectedbooleantrue
    selectedKeys(Controlled) Specifies the keys of the selected treeNodes, multiple selection needs to set multiple to truestring[]-
    showIconControls whether to display the icon node, no default stylebooleanfalse
    showLineShows a connecting lineboolean | {showLeafIcon: ReactNode | ((props: AntTreeNodeProps) => ReactNode)}false
    switcherIconCustomize expand/collapse icons for tree nodes (With default rotate angular style)ReactNode | ((props: AntTreeNodeProps) => ReactNode)-renderProps: 4.20.0
    switcherLoadingIconCustomize loading icons for tree nodesReactNode-5.20.0
    titleRenderCustomize tree node title render(nodeData) => ReactNode-4.5.0
    treeDataThe treeNodes data Array, if set it then you need not to construct children TreeNode. (key should be unique across the whole array)array<{ key, title, children, [disabled, selectable] }>-
    virtualDisable virtual scroll when set to falsebooleantrue4.1.0
    onCheckCallback function for when the onCheck event occursfunction(checkedKeys, e:{checked: boolean, checkedNodes, node, event, halfCheckedKeys})-
    onDragEndCallback function for when the onDragEnd event occursfunction({event, node})-
    onDragEnterCallback function for when the onDragEnter event occursfunction({event, node, expandedKeys})-
    onDragLeaveCallback function for when the onDragLeave event occursfunction({event, node})-
    onDragOverCallback function for when the onDragOver event occursfunction({event, node})-
    onDragStartCallback function for when the onDragStart event occursfunction({event, node})-
    onDropCallback function for when the onDrop event occursfunction({event, node, dragNode, dragNodesKeys})-
    onExpandCallback function for when a treeNode is expanded or collapsedfunction(expandedKeys, {expanded: boolean, node})-
    onLoadCallback function for when a treeNode is loadedfunction(loadedKeys, {event, node})-
    onRightClickCallback function for when the user right clicks a treeNodefunction({event, node})-
    onSelectCallback function for when the user clicks a treeNodefunction(selectedKeys, e:{selected: boolean, selectedNodes, node, event})-

    TreeNode props

    PropertyDescriptionTypeDefault
    checkableWhen Tree is checkable, set TreeNode display Checkbox or notboolean-
    disableCheckboxDisables the checkbox of the treeNodebooleanfalse
    disabledDisables the treeNodebooleanfalse
    iconCustomize icon. When you pass component, whose render will receive full TreeNode props as component propsReactNode | (props) => ReactNode-
    isLeafDetermines if this is a leaf node(effective when loadData is specified). false will force trade TreeNode as a parent nodeboolean-
    keyUsed with (default)ExpandedKeys / (default)CheckedKeys / (default)SelectedKeys. P.S.: It must be unique in all of treeNodes of the treestring(internal calculated position of treeNode)
    selectableSet whether the treeNode can be selectedbooleantrue
    titleTitleReactNode---

    DirectoryTree props

    PropertyDescriptionTypeDefault
    expandActionDirectory open logic, optional: false | click | doubleClickstring | booleanclick

    Note

    Before 3.4.0: The number of treeNodes can be very large, but when checkable=true, it will increase the compute time. So, we cache some calculations (e.g. this.treeNodesStates) to avoid double computing. But, this brings some restrictions. When you load treeNodes asynchronously, you should render tree like this:

    jsx
    {
    this.state.treeData.length ? (
    <Tree>
    {this.state.treeData.map((data) => (
    <TreeNode />
    ))}
    </Tree>
    ) : (
    'loading tree'
    );
    }

    Tree Methods

    NameDescription
    scrollTo({ key: string | number; align?: 'top' | 'bottom' | 'auto'; offset?: number })Scroll to key item in virtual scroll

    Design Token

    Component TokenHow to use?
    Token NameDescriptionTypeDefault Value
    directoryNodeSelectedBgBackground color of selected directory nodestring#1677ff
    directoryNodeSelectedColorText color of selected directory nodestring#fff
    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)
    titleHeightNode title heightnumber24
    Global TokenHow to use?

    FAQ

    Why defaultExpandAll not working on ajax data?

    default prefix prop only works when initializing. So defaultExpandAll has already executed when ajax load data. You can control expandedKeys or render Tree when data loaded to realize expanded all.

    Virtual scroll limitation

    Virtual scroll only render items in visible region. Thus not support auto width (like long title with horizontal scroll).

    What does disabled node work logic in the tree?

    Tree change its data by conduction. Includes checked or auto expanded, it will conduction state to parent / children node until current node is disabled. So if a controlled node is disabled, it will only modify self state and not affect other nodes. For example, a parent node contains 3 child nodes and one of them is disabled. When check the parent node, it will only check rest 2 child nodes. As the same, when check these 2 child node, parent will be checked whatever checked state the disabled one is.

    This conduction logic prevent that modify disabled parent checked state by check children node and user can not modify directly with click parent which makes the interactive conflict. If you want to modify this conduction logic, you can customize it with checkStrictly prop.

    Basic

    The most basic usage, tell you how to use checkable, selectable, disabled, defaultExpandKeys, and etc.

    CodeSandbox Icon
    codeblock
    codepen icon
    External Link Icon
    expand codeexpand code
    draggable

    Drag treeNode to insert after the other treeNode or insert into the other parent TreeNode.

    CodeSandbox Icon
    codeblock
    codepen icon
    External Link Icon
    expand codeexpand code
    Searchable

    Searchable Tree.

    CodeSandbox Icon
    codeblock
    codepen icon
    External Link Icon
    expand codeexpand code
    Customize Icon

    You can customize icons for different nodes.

    CodeSandbox Icon
    codeblock
    codepen icon
    External Link Icon
    expand codeexpand code
    Customize collapse/expand icon

    customize collapse/expand icon of tree node

    CodeSandbox Icon
    codeblock
    codepen icon
    External Link Icon
    expand codeexpand code
    Block Node
    CodeSandbox Icon
    codeblock
    codepen icon
    External Link Icon
    expand codeexpand code
    Controlled Tree

    Controlled mode lets parent nodes reflect the status of child nodes more intelligently.

    CodeSandbox Icon
    codeblock
    codepen icon
    External Link Icon
    expand codeexpand code
    load data asynchronously

    To load data asynchronously when click to expand a treeNode.

    CodeSandbox Icon
    codeblock
    codepen icon
    External Link Icon
    expand codeexpand code
    Tree with line

    Tree with connected line between nodes, turn on by showLine, customize the preset icon by switcherIcon.

    CodeSandbox Icon
    codeblock
    codepen icon
    External Link Icon
    expand codeexpand code
    directory

    Built-in directory tree. multiple support ctrl(Windows) / command(Mac) selection.

    CodeSandbox Icon
    codeblock
    codepen icon
    External Link Icon
    expand codeexpand code
    Virtual scroll

    Use virtual list through height prop.

    CodeSandbox Icon
    codeblock
    codepen icon
    External Link Icon
    expand codeexpand code
    parent 1
    parent 1-0
    leaf
    leaf
    parent 1-1
    sss
    0-0
    0-0-0
    0-0-0-0
    0-0-0-1
    0-0-0-2
    0-0-1
    0-0-2
    0-1
    0-2
    0-0
    0-1
    0-2
    parent 1
    leaf
    leaf
    parent 1
    parent 1-0
    leaf
    leaf
    leaf
    parent 1-1
    parent 1-2
    parent
    child 1
    child 2
    0-0
    0-0-0
    0-0-0-0
    0-0-0-1
    0-0-0-2
    0-0-1
    0-0-1-0
    0-0-1-1
    0-0-1-2
    0-0-2
    0-1
    0-2
    Expand to load
    Expand to load
    Tree Node
    showLine:

    showIcon:

    showLeafIcon:
    True
    parent 1
    parent 1-0
    leaf
    multiple line title
    multiple line title
    leaf
    parent 1-1
    parent 1-2
    parent 2
    parent 0
    leaf 0-0
    leaf 0-1
    parent 1
    leaf 1-0
    leaf 1-1
    0-0
    0-0-0
    0-0-0-0
    0-0-0-0-0
    0-0-0-0-1
    0-0-0-0-2
    0-0-0-0-3
    0-0-0-0-4
    0-0-0-0-5
    0-0-0-0-6