@hi-ui/tree
TypeScript icon, indicating that this package has built-in type declarations

4.6.2 • Public • Published

Tree 树形控件

具备展示多层级数据结构特征的组件

何时使用

多层级数据结构

需要明确的展示层级结构

对多层级结构节点进行操作

使用示例

Props

参数 说明 类型 可选值 默认值
data 展示数据 DataItem [] - -
checkable 节点前添加 Checkbox 复选框(暂不支持与 draggable 和 editable 同时使用) boolean true | false false
editable 节点右键可编辑(添加同级节点、添加子节点、编辑节点、删除节点) boolean true | false false
draggable 节点可拖拽 boolean true | false false
searchable 节点可搜索 boolean true | false false
selectable 节点是否可选中 boolean true | false true
onLoadChildren 点击异步加载子项 (treeNode: TreeNode) => LoadChildren - -
defaultExpandAll 是否默认展开所有树节点 boolean true | false false
defaultSelectedId 默认选中的节点 string - -
selectedId 选中的节点 string - -
defaultCheckedIds 默认选中的复选框的节点 string[] - -
checkedIds 选中的复选框的节点 string[] - -
defaultExpandedIds 默认展开的节点 string[] - -
expandedIds 展开的节点 string[] - -
openIcon 表示展开的图标 string Icon 图标名称 -
closeIcon 表示闭合的图标 string Icon 图标名称 -
apperance 树形控件的展现形态 string 'default' | 'line' | 'folder' 'default'
contextMenu 自定义右键菜单,参考 示例页面底部自定义右键菜单使用说明 ContextMenuOption[] | (item: DataItem, level: number) => ContextMenuOption[] []

Events

名称 说明 类型 参数 返回值
onExpand 节点被点击(展开/收起)时触发 (expandedNode: TreeNode, expanded: boolean, expandIds: string[] ) => void expandedNode: 点击的树节点
expanded: 点击的节点展开状态
expandIds: 当前展开的树节点 ID 集合
-
onCheck 点击节点多选框触发 (checked: boolean, checkedIds: string[], checkedNode: TreeNode) => void checked: 点击节点是否被勾选
checkedIds: 选中/半选节点数据;{checkedIds: array, semiCheckedIds: array}
checkedNode: 操作的节点对象
-
onSelect 点击节点时触发 (selectedNode: TreeNode) => void selectedNode: 选中的树节点 -
onDragStart 节点开始拖拽时触发 (dragNode: TreeNode) => void dragNode: 拖拽的节点对象 -
onDrop 节点放开时触发 (dragNode: TreeNode, dropNode: TreeNode, data: DataStatus, level: Level) => boolean dragNode: 拖拽的节点对象
dropNode: 目标节点对象
data:当前结构数据 DataStatus
level:当前级别数据
-
onDropEnd 节点拖拽成功时触发 (dragNode: TreeNode, dropNode: TreeNode) => void dragNode: 拖拽的节点对象
dropNode: 目标节点对象
-
onBeforeDelete 节点删除前触发,返回 false 则节点删除失败,不会触发 onDelete (deletedNode: TreeNode, data: DataStatus, level: number) => boolean deletedNode: 要删除的节点对象
data:当前结构数据 DataStatus
level:当前级别数据
boolean: 返回 false 将阻止删除
onDelete 节点删除后触发 (deletedNode: TreeNode, data: TreeNode[]) => void deletedNode: 删除的节点对象
data: 删除后的节点数据集合
-
onBeforeSave 节点保存新增、编辑状态时触发 (savedNode: TreeNode, data: DataStatus, level: number) => boolean savedNode: 要保存的数据对象
data:当前结构数据 DataStatus
level:当前级别数据
boolean: 返回 false 则保存新增、编辑失败,不会触发 onSave
onSave 节点保存新增、编辑状态后触发 (savedNode: TreeNode, data: TreeNode[]) => void savedNode: 保存的数据对象
data: 保存后的节点数据集合
-

Type

LoadChildren

参数 说明 类型 可选值 默认值
method 异步请求的方法 string 'get' | 'post' 'get'
url 异步请求的 url string - -
headers 异步请求的请求头 TreeNode - -
data post 请求时的请求体 object - -
params 异步请求时的 url 参数 object - -
transformResponse 对异步请求结果进行加工处理的函数,返回结果用于生成子节点项 (response: object) => TreeNode[] - -

TreeNode

参数 说明 类型 可选值 默认值
id 树节点唯一 id string - -
title 树节点标题 string | ReactNode - -
disabled 是否禁用节点 boolean true | false false
children 该节点的子节点 TreeNode[] - -
isLeaf 是否为叶子节点 boolean true | false -
selectable 节点是否可选中 boolean true | false true

Level

参数 说明 类型 可选值 默认值
before 拖拽前在树中的层级 number - -
after 拖拽后在树中的层级 number - -

DataStatus

参数 说明 类型 可选值 默认值
before 更新前整个树的数据结构 []TreeNode - -
after 更新后整个树的数据结构 []TreeNode - -

ContextMenuOption

参数 说明 类型 可选值 默认值
type 菜单执行的功能 string editNode: 编辑当前节点
addChildNode: 添加子节点
addSiblingNode: 添加同级节点
deleteNode: 删除当前节点
-
title 菜单标题 string | ReactNode - -
onClick 点击菜单项时的回调 ( item: DataItem, node: TreeNode) => void - -

自定义右键菜单使用说明

contextMenu 参数:

  • type: editNode / addChildNode / addSiblingNode / deleteNode

  • title: 自定义 Title / 行为默认 Title

  • onClick: (item: 当前节点数据, node: 当前节点) => {

    如需调用组件提供的 新增同级节点 / 新增子节点 / 编辑当前节点/ 删除当前节点

    需调用 node.addSiblingNode/ addChildNode/ editNode / deleteNode

    }

CHANGELOG

参数 变更类型 变更内容 解决的问题
propName feature | deprecated | update 变更了什么 之前是什么样子,解决什么问题
---- ---- ---- ----
onExpand update 定义 (expandedNode: TreeNode, expanded: boolean, expandIds: string[] ) => void -> (expandedIds: React.ReactText[], node: TreeNodeEventData, expanded: boolean) => void 参数变更,统一第一个参数为 id 数据
onLoadChildren update 定义 (treeNode: TreeNode) => LoadChildren -> (node: TreeNodeEventData) => void | Promise<TreeDataItem[] | void> 参数统一支持状态注入
onDragStart update 定义 (dragNode: TreeNode) => void -> (dragNode: TreeNodeEventData) => void 参数统一支持状态注入
onDragEnd feature - 拖拽结束时触发
onDragLeave feature - 节点 drag leaver 时调用
onDragOver feature - 节点 drag over 时调用
onDrop update 定义 (dragNode: TreeNode, dropNode: TreeNode, data: DataStatus, level: Level) => boolean -> (dragNode: TreeNodeEventData, dropNode: TreeNodeEventData, dataStatus: DataStatus, level: Level) => boolean | Promise<boolean> 1. 参数统一支持状态注入; 2. 支持 Promise 返回
onDropEnd update 定义 (dragNode: TreeNode, dropNode: TreeNode) => void -> (dragNode: TreeNodeEventData, dropNode: TreeNodeEventData) => void 参数统一支持状态注入
onSelect update 定义 (selectedNode: TreeNode) => void -> (selectedId: React.ReactText | null, selectedNode: TreeNodeEventData | null) => void 1. 参数变更,统一第一个参数为 id 数据,2. 支持反选
onCheck update 定义 (checked: boolean, checkedIds: string[], checkedNode: TreeNode) => void -> (checkedIds: React.ReactText[], node: TreeNodeEventData, checked: boolean, semiCheckedIds: React.ReactText[]) => void 参数变更,统一第一个参数为 id 数据;2. 参数结构设计和其它 onCheck 一致;3. 参数统一支持状态注入
checkedIds update 类型 string => string | number 对于 id 值的控制,均使用 React.ReactText(即 string 和 number 都支持)
defaultCheckedIds update 类型 string => string | number 对于 id 值的控制,均使用 React.ReactText(即 string 和 number 都支持)
selectedId update 类型 string => string | number 对于 id 值的控制,均使用 React.ReactText(即 string 和 number 都支持)
defaultSelectedId update 类型 string => string | number 对于 id 值的控制,均使用 React.ReactText(即 string 和 number 都支持)
expandedIds update 类型 string => string | number 对于 id 值的控制,均使用 React.ReactText(即 string 和 number 都支持)
defaultExpandedIds update 类型 string => string | number 对于 id 值的控制,均使用 React.ReactText(即 string 和 number 都支持)
virtual feature - 支持虚拟列表
height feature - 支持虚拟列表
itemHeight feature - 支持虚拟列表
showLine feature - 交互更新,连接线开关控制
expandedIcon update 字段: openIcon -> expandIcon,类型:string-> React.ReactNode 关键词命名
collapsedIcon update 字段: closeIcon -> collapsedIcon,类型:string-> React.ReactNode 语义化命名
leafIcon feature - 叶子节点 icon
titleRender feature - 统一支持自定义渲染每一项
onContextMenu feature - 节点编辑操作交互更新,废弃右键
contextMenu deprecated - 节点编辑操作交互更新,废弃右键
menuOptions feature 类型和 contextMenu 一致 节点编辑操作交互更新,废弃右键
onBeforeSave update 定义 (savedNode: TreeNode, data: DataStatus, level: number) => boolean -> (savedNode: FlattedTreeNodeData, data: TreeDataStatus, level: number) => boolean |Promise 1. 参数统一支持状态注入 2. 支持返回 Promise
onSave update 定义 (savedNode: TreeNode, data: TreeNode[]) => void -> (savedNode: FlattedTreeNodeData, data: TreeDataItem[]) => void 1. 参数统一支持状态注入 2. 支持返回 Promise
onBeforeDelete update 定义 (savedNode: TreeNode, data: DataStatus, level: number) => boolean -> (savedNode: FlattedTreeNodeData, data: TreeDataStatus, level: number) => boolean |Promise 1. 参数统一支持状态注入 2. 支持返回 Promise
onDelete update 定义 (savedNode: TreeNode, data: TreeNode[]) => void -> (savedNode: FlattedTreeNodeData, data: TreeDataItem[]) => void 1. 参数统一支持状态注入 2. 支持返回 Promise
editPlaceholder feature - 强化支持编辑输入框自定义 placeholder
onSearch feature - 强化支持搜索框 change 时回调

编辑功能使用方式变更 EditableTree = useTreeAction(Tree) 搜索功能使用方式变更 SearchableTree = useTreeSearch(Tree)

/@hi-ui/tree/

    Package Sidebar

    Install

    npm i @hi-ui/tree

    Weekly Downloads

    154

    Version

    4.6.2

    License

    MIT

    Unpacked Size

    300 kB

    Total Files

    73

    Last publish

    Collaborators

    • sivan
    • solarjoker