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
Controlled Tree
draggable
load data asynchronously
Searchable
Tree with line
Customize Icon
directory
Customize collapse/expand icon
Virtual scroll
Block Node
Custom semantic dom styling
API
Tree props
TreeNode props
DirectoryTree props
Note
Tree Methods
Semantic DOM
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';
GitHub
components/treeIssueOpen issues
Docs
Edit this pageLLMs.md
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
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

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

PropertyDescriptionTypeDefaultVersionGlobal Config
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×
classNamesCustomize class for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-6.0.0
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 the tree is disabledbooleanfalse×
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 enablednumber-×
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 to work with loadDatastring[][]×
motionCustom motion config for the treeCSSMotionProps-×
multipleAllows selecting multiple treeNodesbooleanfalse×
rootStyleStyle on the root elementCSSProperties-4.20.0×
selectableWhether it 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 style)booleanfalse×
showLineShows a connecting lineboolean | {showLeafIcon: ReactNode | ((props: AntTreeNodeProps) => ReactNode)}false×
stylesCustomize inline style for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-6.0.0
switcherIconCustomize expand/collapse icons for tree nodes (Will not rotate automatically in showLine mode)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})-×
onDoubleClickCallback function for when the user double clicks a treeNodefunction(event, node)-×
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 the TreeNode to be treated 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 opening logic, options: 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

Semantic DOM

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)
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)
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
motionEaseInOutPreset motion curve.string
Cubic Bezier Visualizer
cubic-bezier(0.645, 0.045, 0.355, 1)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

Why defaultExpandAll not working on ajax data?

default prefix props only work when initializing. So defaultExpandAll has already been executed when ajax loads data. You can control expandedKeys or render the Tree when data is loaded to realize expanding all nodes.

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 prevents modifying disabled parent checked state by checking children nodes, and users cannot modify directly with click which avoids interactive conflicts. If you want to modify this conduction logic, you can customize it with the checkStrictly prop.

Basic

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

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

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

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

Searchable Tree.

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

You can customize icons for different nodes.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Customize collapse/expand icon

customize collapse/expand icon of tree node

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Block Node
CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Controlled Tree

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

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
load data asynchronously

To load data asynchronously when click to expand a treeNode.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Tree with line

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

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

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

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Virtual scroll

Use virtual list through height prop.

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

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

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
6.0.0
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
parent 1
parent 1
parent 1-0
leaf
leaf
parent 1-1
leaf
parent 1
leaf
leaf
  • root
    6.0.0
    Root element with tree control base styles, layout and container control
  • item
    6.0.0
    Item element with tree node base styles, drag state, role attributes, indentation, switcher, content wrapper and other node structure
  • itemIcon
    6.0.0
    Icon element with tree node icon styles, size and state display
  • itemTitle
    6.0.0
    Title element with tree node title text display styles and text content
  • itemSwitcher
    6.4.0
    Switcher element with tree node expand/collapse button styles and background