Tree 树形控件

用清晰的层级结构展示信息。

基础用法

基础的树形结构。

可选

用于节点选择。

警告

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

懒加载模式下的自定义叶子节点

多次懒加载 2.6.3

禁用复选框

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

默认展开和默认选中

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

节点勾选

自定义节点内容

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

自定义节点类名

树节点的类可以自定义

树节点过滤

树节点可以被过滤

手风琴

每次只打开一个同级树节点。

可拖拽

通过添加 draggable 属性,您可以拖放树节点。

Tree API

属性

名称描述类型默认值
data树数据object
empty-text数据为空时显示的文本string
节点键节点的唯一标识键名,其值在整个树中应唯一string
props配置选项,请参见下表object
展开后渲染是否在父节点第一次展开后才渲染其子节点booleantrue
load加载子树数据的方法,仅在 lazy 为 true 时有效Function
render-content树节点的渲染函数Function
highlight-current是否高亮当前节点booleanfalse
default-expand-all是否默认展开所有节点booleanfalse
expand-on-click-node是否在点击节点时展开或折叠节点,如果为 false,则仅在点击箭头图标时展开或折叠节点。booleantrue
check-on-click-node是否在点击节点时选中或取消选中节点,如果为 false,则只能通过点击复选框来选中或取消选中节点。booleanfalse
check-on-click-leaf 2.9.6是否在点击叶子节点(最后的子节点)时选中或取消选中节点。booleantrue
自动展开父节点当一个子节点被展开时,是否也展开其父节点booleantrue
default-expanded-keys初始展开节点的键数组object
show-checkbox节点是否可选booleanfalse
check-strictly当 `show-checkbox` 为 `true` 时,节点的选中状态是否不影响其父节点和子节点booleanfalse
default-checked-keys初始选中节点的键数组object
current-node-key初始选中节点的键string / number
过滤节点的方法使用过滤方法时,此函数将在每个节点上执行。如果返回 `false`,树节点将被隐藏。Function
accordion是否每次只打开一个同级树节点booleanfalse
indent相邻层级节点之间的水平缩进(以像素为单位)number18
icon自定义树节点图标组件string / Component
lazy是否懒加载叶子节点,与 load 属性配合使用booleanfalse
draggable是否启用树节点的拖拽功能booleanfalse
允许拖拽此函数将在拖动一个节点之前执行。如果返回 false,则该节点不能被拖动Function
允许放置此函数将在拖拽节点被放置之前执行。如果返回 false,则拖拽节点不能被放置到目标节点。type 有三个可能的值:'prev' (将拖拽节点插入到目标节点之前)、'inner' (将拖拽节点插入到目标节点内部) 和 'next' (将拖拽节点插入到目标节点之后)Function

props

属性描述类型默认值
label指定节点对象的哪个键用作节点的标签string / Function
children指定哪个节点对象用作节点的子树string
disabled指定节点对象的哪个键表示节点的复选框是否被禁用string / Function
是否为叶子节点指定节点是否为叶子节点,仅在懒加载启用时有效string / Function
class自定义节点类名string / Function

暴露

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

方法描述参数
filter过滤所有树节点,被过滤的节点将被隐藏接受一个参数,该参数将作为 filter-node-method 的第一个参数
更新子节点为节点设置新数据,仅在指定了 node-key 时有效(key, data) 接受两个参数:1. 节点的 key 2. 新数据
getCheckedNodes如果节点可选(`show-checkbox` 为 `true`),则返回当前选中的节点数组(leafOnly, includeHalfChecked) 接受两个布尔类型的参数:1. 默认值为 false。如果参数为 true,它只返回当前选中的子节点数组。2. 默认值为 false。如果参数为 true,返回值将包含半选中的节点
设置已选中的节点设置某些节点为选中状态,仅在指定了 node-key 时有效(nodes, leafOnly) 接受两个参数:1. 一个要被选中的节点对象数组 2. 一个布尔参数。如果设置为 true,将只设置叶子节点的选中状态。默认值为 false
getCheckedKeys如果节点可选(`show-checkbox` 为 `true`),则返回当前选中的节点键数组(leafOnly) 接受一个布尔类型的参数,其默认值为 false。如果参数为 true,它只返回当前选中的子节点数组。
setCheckedKeys设置某些节点为选中状态,仅在指定了 node-key 时有效(keys, leafOnly) 接受两个参数:1. 一个要被选中的节点 key 数组 2. 一个布尔参数。如果设置为 true,将只设置叶子节点的选中状态。默认值为 false
setChecked设置节点为选中或非选中状态,仅在指定了 node-key 时有效(key/data, checked, deep) 接受三个参数:1. 要选中的节点的 key 或 data 2. 一个布尔类型的参数,表示选中或不选中。3. 一个布尔类型的参数,表示是否深度选择 (注意 check-strictly 必须为 false)。
getHalfCheckedNodes如果节点可选(`show-checkbox` 为 `true`),则返回当前半选中的节点数组
getHalfCheckedKeys如果节点可选(`show-checkbox` 为 `true`),则返回当前半选中的节点键数组
getCurrentKey返回高亮节点的 key (如果没有节点被高亮则返回 null)
getCurrentNode返回高亮节点的数据 (如果没有节点被高亮则返回 null)
setCurrentKey通过 key 设置高亮节点,仅在指定了 node-key 时有效(key, shouldAutoExpandParent=true) 1. 要高亮的节点的 key。如果为 null,则取消当前高亮的节点 2. 是否自动展开父节点
设置当前节点设置高亮节点,仅在指定了 node-key 时有效(node, shouldAutoExpandParent=true) 1. 要高亮的节点 2. 是否自动展开父节点
getNode通过 data 或 key 获取节点(data) 节点的 data 或 key
移除移除一个节点,仅在指定了 node-key 时有效(data) 要删除的节点的 data 或节点本身
append向树中的给定节点追加一个子节点(data, parentNode) 1. 要追加的子节点的 data 2. 父节点的 data、key 或节点本身
插入到前面在树中的给定节点之前插入一个节点(data, refNode) 1. 要插入的节点的 data 2. 参考节点的 data、key 或节点本身
插入到后面在树中的给定节点之后插入一个节点(data, refNode) 1. 要插入的节点的 data 2. 参考节点的 data、key 或节点本身

事件

名称描述参数
node-click当节点被点击时触发四个参数:对应于被点击节点的节点对象、TreeNode 的 node 属性、TreeNode 本身、事件对象
node-contextmenu当节点被右键点击时触发四个参数:事件、对应于被点击节点的节点对象、TreeNode 的 node 属性、TreeNode 本身
check-change当节点的选中状态改变时触发三个参数:对应于其选中状态发生变化的节点对象、节点是否被选中、节点的子树是否包含选中节点
check点击节点的复选框后触发两个参数:对应于被选中/取消选中的节点对象,树的选中状态对象,该对象有四个属性:checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys
current-change当前节点改变时触发两个参数:对应于当前节点的节点对象、TreeNode 的 node 属性
node-expand当前节点打开时触发三个参数:对应于被打开的节点对象、TreeNode 的 node 属性、TreeNode 本身
node-collapse当前节点关闭时触发三个参数:对应于被关闭的节点对象、TreeNode 的 node 属性、TreeNode 本身
节点拖拽开始在拖拽开始时触发两个参数:对应于被拖拽节点的节点对象、事件。
节点拖拽进入当拖拽节点进入另一个节点时触发三个参数:对应于被拖拽节点的节点对象、对应于进入节点的节点对象、事件。
节点拖拽离开当拖拽节点离开一个节点时触发三个参数:对应于被拖拽节点的节点对象、对应于离开节点的节点对象、事件。
节点拖拽经过当拖拽经过一个节点时触发(类似于 mouseover 事件)三个参数:对应于被拖拽节点的节点对象、对应于拖拽经过节点的节点对象、事件。
节点拖拽结束在拖拽结束时触发四个参数:对应于被拖拽节点的节点对象、对应于拖拽结束节点的节点对象(可能为 undefined)、节点放置类型(before / after / inner)、事件。
节点放置在拖拽节点被放置后触发四个参数:对应于被拖拽节点的节点对象、对应于被放置节点的节点对象、节点放置类型(before / after / inner)、事件。

插槽

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

类型声明

显示声明
ts
interface RootTreeType {
  root: Ref<Node>
  // ...
}

// UnwrapRef<RootTreeType['root']> => Node
type Node = {
  canFocus: boolean
  checked: boolean
  childNodes: Node[]
  data: TreeNodeData
  expanded: boolean
  id: number
  indeterminate: boolean
  isCurrent: boolean
  isEffectivelyChecked: boolean
  isLeaf?: boolean
  isLeafByUser?: boolean
  level: number
  loaded: boolean
  loading: boolean
  parent: Node | null
  store: TreeStore
  text: string | null
  visible: boolean
}

// TreeNodeData => Tree / TreeOptionProps
// Tree type is your prop type.
// TreeOptionProps is default prop type
interface TreeOptionProps {
  children?: string
  label?: string | ((data: TreeNodeData, node: Node) => string)
  disabled?: string | ((data: TreeNodeData, node: Node) => boolean)
  isLeaf?: string | ((data: TreeNodeData, node: Node) => boolean)
  class?: (
    data: TreeNodeData,
    node: Node
  ) => string | { [key: string]: boolean }
}

来源

组件样式文档

贡献者