Tree V2 虚拟列表树beta

无论数据量多大,都具有极快滚动性能的树形视图

基础用法

基础的树形结构。

可选

用于节点选择。

警告

当使用 show-checkbox 时,由于 `check-on-click-leaf` 默认为 true,可以通过点击最后的子节点来选中它们。

禁用复选框

节点的复选框可以被设置为禁用。

在示例中,disabled 属性在 defaultProps 中声明,部分节点被设置为 disabled: true。对应的复选框被禁用且无法点击。

默认展开和默认选中

树节点可以初始展开或选中

使用 default-expanded-keysdefault-checked-keys 分别设置初始展开和初始选中的节点。

node-1

自定义节点内容

树节点的内容可以自定义,因此您可以随心所欲地添加图标或按钮

自定义节点类名 2.9.0

树节点的类可以自定义

自定义节点图标 2.10.3

你可以为不同的节点状态自定义图标。树节点暴露了 expanded 属性和 isLeaf 属性,允许你根据节点的状态(叶子节点、展开节点或折叠节点)动态渲染不同的图标。

树节点过滤 2.9.1

filter-method 方法在 2.9.1 版本之后才支持接收第三个参数。树节点可以被过滤

调用 Tree 实例的 filter 方法来过滤树节点。其参数为过滤关键字。请注意,为了使其生效,需要配置 filter-method,其值为过滤方法。

TreeV2 API

TreeV2 属性

名称描述类型默认值
data树数据array
empty-text数据为空时显示的文本string
props配置选项,请参见下表object
highlight-current是否高亮当前节点booleanfalse
expand-on-click-node是否在点击节点时展开或折叠节点,如果为 false,则仅在点击箭头图标时展开或折叠节点。booleantrue
check-on-click-node是否在点击节点时选中或取消选中节点,如果为 false,则只能通过点击复选框来选中或取消选中节点。booleanfalse
check-on-click-leaf 2.9.6是否在点击叶子节点(最后的子节点)时选中或取消选中节点。booleantrue
default-expanded-keys初始展开节点的键数组array
show-checkbox节点是否可选booleanfalse
check-strictly当 `show-checkbox` 为 `true` 时,节点的选中状态是否不影响其父节点和子节点booleanfalse
default-checked-keys初始选中节点的键数组array
current-node-key初始选中节点的键string / number
filter-method使用过滤方法时,此函数将在每个节点上执行。如果返回 `false`,树节点将被隐藏。Function
indent相邻层级节点之间的水平缩进(以像素为单位)number16
icon自定义树节点图标组件string / Component
item-size 2.2.33自定义树节点高度number26
scrollbar-always-on 2.10.4总是显示滚动条booleanfalse
高度树的高度number200

props

属性描述类型默认值
value节点的唯一标识键名,其值在整个树中应唯一stringid
label指定节点对象的哪个键用作节点的标签stringlabel
children指定哪个节点对象用作节点的子树stringchildren
disabled指定节点对象的哪个键表示节点的复选框是否被禁用stringdisabled
class 2.9.0自定义节点类名string / Function

TreeV2 暴露的方法

`Tree` 有以下方法,它返回当前选中的节点数组。

方法描述参数
filter过滤所有树节点,被过滤的节点将被隐藏(query: string)
getCheckedNodes如果节点可选(`show-checkbox` 为 `true`),则返回当前选中的节点数组(leafOnly: boolean)
getCheckedKeys如果节点可选(`show-checkbox` 为 `true`),则返回当前选中的节点键数组(leafOnly: boolean)
setCheckedKeys设置某些节点为选中状态(keys: TreeKey[])
setChecked设置节点是否选中,deep(在 2.14.0 中新增)表示是否递归选中/取消选中子节点。(key: TreeKey, checked: boolean, deep?: boolean)
setExpandedKeys设置某些节点为展开状态(keys: TreeKey[])
getHalfCheckedNodes如果节点可选(`show-checkbox` 为 `true`),则返回当前半选中的节点数组
getHalfCheckedKeys如果节点可选(`show-checkbox` 为 `true`),则返回当前半选中的节点键数组
getCurrentKey返回高亮节点的 key(如果没有节点被高亮,则返回 undefined)
getCurrentNode返回高亮节点的数据(如果没有节点被高亮,则返回 undefined)
setCurrentKey通过 key 设置高亮节点(key: TreeKey)
getNode通过 key 或数据获取节点(data: TreeKey | TreeNodeData)
expandNode展开指定节点(node: TreeNode)
collapseNode收起指定节点(node: TreeNode)
setData当数据量非常大时,使用响应式数据会导致性能下降,因此我们提供了一种避开这种情况的方法(data: TreeData)
scrollTo 2.8.0滚动到指定位置(offset: number)
scrollToNode 2.8.0使用指定的滚动策略滚动到给定的树节点 key(key: TreeKey, strategy?: auto | smart | center | start | end)

TreeV2 事件

名称描述参数
node-click当节点被点击时触发(data: TreeNodeData, node: TreeNode, e: MouseEvent)
node-drop 2.8.3当拖拽内容并放置在节点上时触发(data: TreeNodeData, node: TreeNode, e: DragEvent)
node-contextmenu当节点被右键点击时触发(e: Event, data: TreeNodeData, node: TreeNode)
check-change当节点的选中状态改变时触发(data: TreeNodeData, checked: boolean)
check点击节点的复选框后触发(data: TreeNodeData, info: { checkedKeys: TreeKey[],checkedNodes: TreeData, halfCheckedKeys: TreeKey[], halfCheckedNodes: TreeData,})
current-change当前节点改变时触发(data: TreeNodeData, node: TreeNode)
node-expand当前节点打开时触发(data: TreeNodeData, node: TreeNode)
node-collapse当前节点关闭时触发(data: TreeNodeData, node: TreeNode)

TreeV2 插槽

名称描述类型
default自定义树节点内容object
empty 2.9.0当数据为空时的自定义内容

类型声明

显示声明
ts
type TreeNodeData = Record<string, any>
type TreeKey = string | number
type TreeData = TreeNodeData[]

interface TreeNode {
  key: TreeKey
  level: number
  parent?: TreeNode
  children?: TreeNode[]
  data: TreeNodeData
  disabled?: boolean
  label?: string
  isLeaf?: boolean
  expanded?: boolean
  isEffectivelyChecked?: boolean
}

来源

组件文档

贡献者