# tree

- 分组：组合组件（Composite）
- 页面：/components/tree
- 源码：packages/react/src/components/tree.tsx

## 导出

```ts
import { Tree, findNode } from "@modra/react";
```

## Props（TreeProps）

| 名称 | 必填 | 类型 | 说明 |
| --- | --- | --- | --- |
| `treeData` | 是 | `TreeNode[]` |  |
| `expandedKeys` | 否 | `TreeKey[]` |  |
| `defaultExpandedKeys` | 否 | `TreeKey[]` |  |
| `onExpandedKeysChange` | 否 | `(keys: TreeKey[]) => void` |  |
| `selectedKeys` | 否 | `TreeKey[]` |  |
| `defaultSelectedKeys` | 否 | `TreeKey[]` |  |
| `onSelectedKeysChange` | 否 | `(keys: TreeKey[]) => void` |  |
| `checkedKeys` | 否 | `TreeKey[]` |  |
| `defaultCheckedKeys` | 否 | `TreeKey[]` |  |
| `onCheckedKeysChange` | 否 | `(keys: TreeKey[]) => void` |  |
| `checkStrictly` | 否 | `boolean` | Disables parent/child check propagation when true. |
| `halfCheckedKeys` | 否 | `TreeKey[]` | Explicit half checked keys for controlled trees. Derived automatically otherwise. |
| `checkable` | 否 | `boolean` |  |
| `multiple` | 否 | `boolean` |  |
| `loadChildren` | 否 | `(node: TreeNode) => Promise<TreeNode[]>` |  |
| `loading` | 否 | `boolean` | Marks the tree as busy while its root data is loading. |
| `loadingKeys` | 否 | `TreeKey[]` |  |
| `onLoadError` | 否 | `(event: TreeLoadError) => void` |  |
| `activeKey` | 否 | `TreeKey` |  |
| `defaultActiveKey` | 否 | `TreeKey` |  |
| `onActiveKeyChange` | 否 | `(key: TreeKey \| undefined) => void` |  |
| `virtual` | 否 | `boolean` | Render only visible rows in a fixed-height viewport. |
| `height` | 否 | `number` |  |
| `itemHeight` | 否 | `number` |  |
| `overscan` | 否 | `number` |  |
| `draggable` | 否 | `TreeDraggable` | Enable native drag and drop for nodes, optionally filtered per node. |
| `allowDrop` | 否 | `(info: TreeDropInfo) => boolean` | Reject a proposed drop before `onDrop` is called. |
| `onDrop` | 否 | `(info: TreeDropInfo) => void` | Receive a valid mouse or keyboard node move. The caller owns treeData updates. |
| `searchValue` | 否 | `string` | Filters nodes by title, highlights matches, and expands matching ancestor paths. |
| `emptyText` | 否 | `React.ReactNode` | Localized empty content rendered when a search has no matches. |
