Tree
<Tree> Used to show a tree-structured data.
Import
import { Tree } from 'rsuite';Examples
Basic
Show Indent Lines
Custom Tree Node
Draggable
Virtualized
Asynchronous Loading of Child Nodes
Searchable
Disabled Tree Node
Accessibility
ARIA properties
tree
- Tree has role 
tree. 
treeitem
- Tree node has role 
treeitem. - Has the 
aria-expandedattribute to indicate whether the tree is open or not. - Has the 
aria-selectedattribute to indicate whether the tree node is selected or not. - Has the 
aria-levelattribute to indicate the level of the tree node. - Has the 
aria-disabledattribute to indicate whether the tree node is disabled or not. 
Keyboard interactions
- โ - Move focus to the next tree node.
 - โ - Move focus to the previous tree node.
 - โ - Expand the focused tree node if it is collapsed.
 - โ - Collapse the focused tree node if it is expanded.
 - Enter - Select the focused tree node.
 
Props
              <Tree>
              
            
| Property                | Type (Default)                                                                               | Description                                                |
| ----------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | --- |
| childrenKey             | string ('children')                                                                          | Set the key of the child node of the tree node in data |
| classPrefix             | string('picker')                                                                             | The prefix of the component CSS class                      |
| data *                 | TreeNode[]                                                                             | Data to render the tree                                    |
| defaultExpandAll        | boolean                                                                                        | Default expand all nodes                                   |
| defaultExpandItemValues | string[]                                                                                       | Set the value of the default expanded node                 |
| defaultValue            | string                                                                                         | Default selected Value                                     |
| disabledItemValues      | string[]                                                                                       | Disabled tree node values                                  | ห   |
| draggable               | boolean                                                                                        | Whether to enable drag and drop                            |
| expandItemValues        | string[]                                                                                       | Set the value of the expanded node (controlled)            |
| getChildren             | (node: TreeNode) => Promise<TreeNode >                                   | Load node children data asynchronously                     |
| height                  | number (360px)                                                                               | The height of the tree                                     |
| labelKey                | string ('label')                                                                             | Set the tree node display content to the key in data   |
| listProps               | ListProps                                                                         | Properties of virtualized lists                            |
| onChange                | (value:string) => void                                                                         | Called when the tree value changes                         |
| onDragEnd               | (node: TreeNode, event) => void                                                        | Called when drag ends                                      |
| onDragEnter             | (node: TreeNode, event) => void                                                        | Called when drag enters a node                             |
| onDragLeave             | (node: TreeNode, event) => void                                                        | Called when drag leaves a node                             |
| onDragOver              | (node: TreeNode, event) => void                                                        | Called when drag over a node                               |
| onDragStart             | (node: TreeNode, event) => void                                                        | Called when drag start                                     |
| onDrop                  | (dropData: DropDataType, event) => void                                                | Called when drop                                           |
| onExpand                | (expandItemValues: string[], node: TreeNode, concat:(data, children) => Array) => void | Called when the tree node expand state changes             |
| onSearch                | (keyword: string) => void                                                                      | Called when the search box input changes                   |
| onSelect                | (node:TreeNode, value, event) => void                                                  | Called when the tree node is selected                      |
| renderTreeIcon          | (node: TreeNode, expanded: boolean) => ReactNode                                       | Custom render tree node icon                               |
| renderTreeNode          | (node: TreeNode) => ReactNode                                                          | Custom render tree node                                    |
| searchable              | boolean                                                                                        | Whether to show the search box             |
| searchKeyword           | string                                                                                         | Set search keywords for the search box                     |
| showIndentLine          | boolean                                                                                        | Whether to show the indent line                            |
| value                   | string                                                                                         | Set the current selected value                             |
| valueKey                | string 
('value')                                                                             | Set the tree node value to the key in data             |
| virtualized             | boolean                                                                                        | Whether using Virtualized List                             |
              ts:TreeNode
              
            
interface TreeNode {
  /** The value of the option corresponds to the `valueKey` in the data. **/
  value: string | number;
  /** The content displayed by the option corresponds to the `labelKey` in the data. **/
  label: React.ReactNode;
  /** The data of the child option corresponds to the `childrenKey` in the data. */
  children?: TreeNode[];
}
              ts:ListProps
              
            
interface ListProps {
  /**
   * Size of a item in the direction being windowed.
   */
  itemSize?: number | ((index: number) => number);
  /**
   * Scroll offset for initial render.
   */
  initialScrollOffset?: number;
  /**
   * Called when the items rendered by the list change.
   */
  onItemsRendered?: (props: ListOnItemsRenderedProps) => void;
  /**
   * Called when the list scroll positions changes, as a result of user scrolling or scroll-to method calls.
   */
  onScroll?: (props: ListOnScrollProps) => void;
}
              ts:DropDataType
              
            
type DropDataType = {
  /** drag node data */
  dragNode: any;
  /** dropNode data */
  dropNode: any;
  /** node drop position */
  dropNodePosition: TREE_NODE_DROP_POSITION;
  /** Update Data when drop node */
  createUpdateDataFunction: (data: any[]) => any[];
};
enum TREE_NODE_DROP_POSITION {
  DRAG_OVER = 0, // drag node in tree node
  DRAG_OVER_TOP = 1, // drag node on tree node
  DRAG_OVER_BOTTOM = 2 // drag node under tree node
}Related components
<CheckTree>Selector component, which supports a Checkbox on the TreePicker node for multiple selections.<TreePicker>Used to show a tree-structured data.<CheckTreePicker>Used to show a tree-structured data while supporting Checkbox selection.