ant-design/components/tree/index.zh-CN.md
2020-04-08 10:52:55 +08:00

5.8 KiB
Raw Blame History

category type title subtitle
Components 数据展示 Tree 树形控件

多层次的结构列表。

何时使用

文件夹、组织架构、生物分类、国家地区等等,世间万物的大多数结构都是树形结构。使用 树控件 可以完整展现其中的层级关系,并具有展开收起选择等交互功能。

API

Tree props

参数 说明 类型 默认值 版本
autoExpandParent 是否自动展开父节点 boolean true
blockNode 是否节点占据一行 boolean false
checkable 节点前添加 Checkbox 复选框 boolean false
checkedKeys (受控)选中复选框的树节点(注意:父子节点有关联,如果传入父节点 key则子节点自动选中相应当子节点 key 都传入,父节点也自动选中。当设置checkablecheckStrictly,它是一个有checkedhalfChecked属性的对象,并且父子节点的选中与否不再关联 string[] | {checked: string[], halfChecked: string[]} []
checkStrictly checkable 状态下节点选择完全受控(父子节点选中状态不再关联) boolean false
defaultCheckedKeys 默认选中复选框的树节点 string[] []
defaultExpandAll 默认展开所有树节点 boolean false
defaultExpandedKeys 默认展开指定的树节点 string[] []
defaultExpandParent 默认展开父节点 bool true
defaultSelectedKeys 默认选中的树节点 string[] []
disabled 将树禁用 bool false
draggable 设置节点可拖拽IE>8 boolean false
expandedKeys (受控)展开指定的树节点 string[] []
filterTreeNode 按需筛选树节点(高亮),返回 true function(node) -
loadData 异步加载数据 function(node) -
loadedKeys (受控)已经加载的节点,需要配合 loadData 使用 string[] []
multiple 支持点选多个节点(节点本身) boolean false
selectable 是否可选中 boolean true
selectedKeys (受控)设置选中的树节点 string[] -
showIcon 是否展示 TreeNode title 前的图标,没有默认样式,如设置为 true需要自行定义图标相关样式 boolean false
switcherIcon 自定义树节点的展开/折叠图标 ReactNode -
showLine 是否展示连接线 boolean false
treeData treeNodes 数据,如果设置则不需要手动构造 TreeNode 节点key 在整个树范围内唯一) array<{key, title, children, [disabled, selectable]}> -
virtual 设置 false 时关闭虚拟滚动 boolean true 4.1.0
onCheck 点击复选框触发 function(checkedKeys, e:{checked: bool, checkedNodes, node, event, halfCheckedKeys}) -
onDragEnd dragend 触发时调用 function({event, node}) -
onDragEnter dragenter 触发时调用 function({event, node, expandedKeys}) -
onDragLeave dragleave 触发时调用 function({event, node}) -
onDragOver dragover 触发时调用 function({event, node}) -
onDragStart 开始拖拽时调用 function({event, node}) -
onDrop drop 触发时调用 function({event, node, dragNode, dragNodesKeys}) -
onExpand 展开/收起节点时触发 function(expandedKeys, {expanded: bool, node}) -
onLoad 节点加载完毕时触发 function(loadedKeys, {event, node}) -
onRightClick 响应右键点击 function({event, node}) -
onSelect 点击树节点触发 function(selectedKeys, e:{selected: bool, selectedNodes, node, event}) -

TreeNode props

参数 说明 类型 默认值
checkable 当树为 checkable 时,设置独立节点是否展示 Checkbox boolean -
disableCheckbox 禁掉 checkbox boolean false
disabled 禁掉响应 boolean false
icon 自定义图标。可接收组件props 为当前节点 props ReactNode/Function(props):ReactNode -
isLeaf 设置为叶子节点(设置了loadData时有效) boolean false
key 被树的 (default)ExpandedKeys / (default)CheckedKeys / (default)SelectedKeys 属性所用。注意:整个树范围内的所有节点的 key 值不能重复! string 内部计算出的节点位置
selectable 设置节点是否可被选中 boolean true
title 标题 string|ReactNode '---'

DirectoryTree props

参数 说明 类型 默认值
expandAction 目录展开逻辑,可选 false 'click' 'doubleClick' string click

注意

3.4.0 之前:树节点可以有很多,但在设置checkable时,将会花费更多的计算时间,因此我们缓存了一些计算结果(this.treeNodesStates)来复用,避免多次重复计算,以此提高性能。但这也带来了一些限制,当你异步加载树节点时,你需要这样渲染树:

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

FAQ

在 showLine 时,如何隐藏子节点图标?

文件图标通过 switcherIcon 来实现,如果不需要你可以覆盖对应的样式:https://codesandbox.io/s/883vo47xp8

defaultExpandedAll 在异步加载数据时为何不生效?

default 前缀属性只有在初始化时生效,因而异步加载数据时 defaultExpandedAll 已经执行完成。你可以通过受控 expandedKeys 或者在数据加载完成后渲染 Tree 来实现全部展开。