SepTree 树形控件 v1.0.0

展开/折叠 · 单选 · 复选框多选(父子联动 + 半选) · 搜索过滤 + 高亮 · 禁用节点 · 自定义渲染 · TreeSelect 下拉树

1. 基础树形(展开/折叠 + 单选)

功能说明:点击展开箭头折叠/展开子节点(箭头有 0.2s 旋转动画);点击节点标题选中该节点并高亮;defaultExpandAll 默认展开全部节点;size 控制节点尺寸(small/middle/large);showLine 显示树形连接线(含 ├ └ 连接器和祖先竖线)。键盘支持 ↑↓ 导航、← 折叠、→ 展开、Enter 选中。

HTML 声明式标签
JS API 初始化
未选择

2. 复选框多选(父子联动 + 半选)

HTML 声明式标签
JS API 初始化
checkedKeys: []
checkedKeys: []

3. 搜索过滤 + 高亮

HTML 声明式标签
JS API 初始化

4. 禁用节点

HTML 声明式标签
JS API 初始化

5. 自定义节点渲染(titleRender / icon)

JS API 初始化

6. API 动态操作

JS API 初始化
—

7. SepTreeSelect 下拉树选择

HTML 声明式标签
JS API 初始化

8. 增强功能(拖拽排序 + 虚拟滚动 + blockNode + filterTreeNode + loadData)

功能说明:draggable 开启节点拖拽排序,drop 时通过 onDrop 回调交付排序结果;virtual 开启虚拟滚动,仅渲染可视区节点,适合超大数据量(如 500+ 条);blockNode 整行响应选中点击;filterTreeNode 自定义搜索匹配逻辑;loadData 支持异步懒加载子节点。

HTML 声明式标签
JS API 初始化
selectedKeys: []
未右键
getCheckedKeys: []
JS API 初始化(高级)
未加载

8b. 第三批增强(autoExpandParent / emptyText / searchPlaceholder / searchField / showIcon / indent)

功能说明:autoExpandParent 设置 checkedKeys/selectedKeys 时自动展开父节点链;emptyText 自定义空数据提示文本;searchPlaceholder 自定义搜索框占位符;searchField 指定搜索匹配的字段;showIcon 控制是否显示节点图标;indent 自定义每层缩进像素值。

9. TreeSelect 增强(maxTagCount + showCheckedStrategy)

功能说明:maxTagCount 限制多选标签展示数量,超出折叠为 +N 提示(支持 maxTagPlaceholder 自定义折叠内容);showCheckedStrategy 控制多选时选中值的展示策略 —— SHOW_ALL 显示全部 / SHOW_PARENT 只显示最高层级父节点 / SHOW_CHILD 只显示末级子节点(无子节点被选中的)。

HTML 声明式标签
JS API 初始化

10. TreeSelect 进阶(labelInValue + 自定义下拉样式 + treeNodeLabelProp)

功能说明:labelInValue 使 getValue/setValue 返回 {value, label} 结构,便于同时获取键值与显示文本;dropdownStyle / dropdownClassName 自定义下拉面板内联样式与类名(下方示例面板为 360px 宽 + 主题色边框);treeNodeLabelProp 指定用于显示标签的节点字段(替代默认 titleField)。

HTML 声明式标签
JS API 初始化

10.5 体验增强(selectable + expandOnCheckNode + checkOnClickLeafOnly + bordered + showArrow + maxTagTextLength)

功能说明:selectable:false 禁用节点选中(仍可展开/勾选);expandOnCheckNode 勾选节点时自动展开;props 统一配置字段映射;bordered 控制边框;showArrow 控制箭头;maxTagTextLength 标签文本截断;listHeight 下拉面板高度;checkOnClickNode 点标题勾选;checkOnClickLeafOnly 仅叶子节点点标题勾选(父节点只展开不勾选)。

HTML 声明式标签
JS API 初始化

10.6 事件回调与容器挂载(onSearch + onClear + getPopupContainer)

功能说明:onSearch 搜索关键词变化时回调;onClear 清除选择时回调;getPopupContainer 指定下拉面板挂载容器(解决被父级 overflow 裁剪的问题);同时支持 别名:nodeKey(keyField)、treeData(data)、defaultExpandParent(autoExpandParent)、filterNodeMethod(filterTreeNode)。

事件回调演示
当前关键词:<空>
清除状态:未清除

11. 自动化断言

12. 完整功能说明(配置项 / API / 事件)

12.1 Tree 配置项

配置项类型默认值说明
dataArray[]树节点数据,结构由 keyField/titleField/childrenField 定义
keyFieldString'id'节点唯一标识字段名
titleFieldString'title'节点标题字段名
childrenFieldString'children'子节点数组字段名
propsObjectnull统一字段映射:{label, children, disabled}
dataModeString'tree'数据格式:'tree' 嵌套结构 / 'flat' 扁平结构(配合 parentField)
parentFieldString'parentId'扁平数据中父节点字段名
defaultExpandAllBooleanfalse是否默认展开全部节点
defaultExpandLevelNumber0默认展开的层级数,0 表示不按层级展开
expandedKeysArray[]默认展开的节点 key 数组
checkedKeysArray[]默认勾选的节点 key 数组(checkable=true 时生效)
selectedKeyAnynull默认选中的节点 key(单选模式)
selectedKeysArray[]默认选中的节点 key 数组(多选模式)
checkableBooleanfalse是否显示复选框
checkStrictlyBooleanfalse是否父子不联动(严格勾选模式)
checkOnClickNodeBooleanfalse是否点击节点标题时勾选/取消复选框
checkOnClickLeafOnlyBooleanfalsecheckOnClickNode 为 true 时,是否仅叶子节点生效(父节点不勾选)
multipleBooleanfalse是否允许多选
selectableBooleantrue是否允许选中节点(false 时仍可展开/勾选)
expandOnClickNodeBooleantrue是否点击节点时展开/折叠
expandOnCheckNodeBooleanfalse是否勾选节点时自动展开其子节点
accordionBooleanfalse是否手风琴模式(同级只展开一个)
highlightCurrentBooleantrue是否高亮当前选中节点
showCheckedStrategyString'SHOW_ALL'勾选结果返回策略:SHOW_ALL 全部 / SHOW_PARENT 只父节点 / SHOW_CHILD 只子节点
showLineBooleanfalse是否显示树形连接线
iconString|Functionnull全局节点图标(FontAwesome 类名或返回类名的函数)
showIconBooleantrue是否显示节点图标
switcherIconObjectnull自定义展开箭头 { open, close }
titleRenderFunctionnull自定义节点标题渲染函数 (node) => HTML
tooltipBooleantrue是否显示原生 title 提示
searchableBooleanfalse是否显示搜索框
searchDebounceNumber200搜索防抖毫秒数
searchFieldString''搜索匹配的字段名,默认使用 titleField
searchPlaceholderString''搜索框占位符
onSearchFunctionnull搜索关键词变化时回调 (keyword) => void
renderAfterExpandBooleanfalse是否仅渲染已展开节点的子节点(性能优化)
filterTreeNodeFunctionnull自定义节点过滤函数 (node, keyword) => Boolean
emptyTextString''空数据提示文本
indentNumber0每层缩进像素值(0 使用默认 24px)
autoExpandParentBooleantrue设置 checkedKeys/selectedKeys 时是否自动展开父节点链
draggableBooleanfalse是否允许拖拽节点
allowDragFunctionnull判断节点是否可拖拽 (node) => Boolean
allowDropFunctionnull判断是否允许放置 (dragNode, dropNode, type) => Boolean
loadDataFunctionnull异步加载子节点数据 (node) => Promise 或 回调
blockNodeBooleantrue是否整行可点击(false 时仅标题可点)
virtualBooleanfalse是否启用虚拟滚动(大数据量优化)
heightNumber0虚拟滚动容器高度
sizeString'middle'尺寸:'small' / 'middle' / 'large'
disabledBooleanfalse是否禁用整个树

12.2 Tree API 方法

方法参数返回说明
getData()-Array获取当前树数据
setData(data)data: Arrayvoid重新设置树数据
getNode(key)keyNode|null根据 key 获取节点对象
getExpandedKeys()-Array获取所有展开节点的 key
expand(key)keyvoid展开指定节点
collapse(key)keyvoid折叠指定节点
expandAll()-void展开全部节点
collapseAll()-void折叠全部节点
getCheckedKeys()-Array获取所有勾选节点的 key(按 showCheckedStrategy)
getHalfCheckedKeys()-Array获取半选状态节点的 key
setCheckedKeys(keys)keys: Arrayvoid设置勾选的节点 key
check(key)keyvoid勾选指定节点
uncheck(key)keyvoid取消勾选指定节点
checkAll()-void全选所有可勾选节点
uncheckAll()-void取消所有勾选
getSelectedKey()-Any获取单选模式选中的 key
getSelectedKeys()-Array获取多选模式选中的 key 数组
setSelectedKeys(keys)keys: Arrayvoid设置选中的节点 key
search(keyword)keyword: Stringvoid搜索过滤节点并高亮匹配项
append(data, parentKey)data, parentKey?Node追加子节点(parentKey 为空则追加到根)
insertBefore(data, refKey)data, refKeyNode在 refKey 节点前插入
insertAfter(data, refKey)data, refKeyNode在 refKey 节点后插入
remove(key)keyBoolean删除指定节点
update(key, data)key, dataNode更新指定节点的数据
setLoading(key, loading)key, loading: BooleanBoolean设置节点加载状态
scrollTo(key)keyBoolean滚动到指定节点(自动展开父链)
destroy()-void销毁实例并清理事件

12.3 Tree 事件回调

事件回调参数说明
onChangevalue选中或勾选变化时触发(单选传 key,多选传 keys)
onSelectkey, { selected, node }节点选中状态变化时触发
onCheckkeys, { checked, node }节点勾选状态变化时触发
onExpandkeys, { expanded, node }节点展开/折叠时触发
onNodeClickkey, { node, event }点击节点标题时触发
onContextMenue, { key, node }节点右键点击时触发
onDragStartnode, e开始拖拽节点时触发
onDragEndnode, e结束拖拽时触发
onDrop{ dragNode, dropNode, dropType, event }放置节点时触发,dropType: 'before'|'after'|'inner'

12.4 节点级自定义属性

属性类型说明
iconString|Function节点图标,优先级高于全局 icon
classNameString节点附加 CSS 类名
styleObject节点行内样式
disabledBoolean禁用该节点(不可选、不可拖拽)
disableCheckboxBoolean禁用该节点的复选框(仍可展开折叠)
isLeafBoolean是否叶子节点(影响展开箭头和异步加载)

12.5 TreeSelect 特有配置

配置项类型默认值说明
valueAny|Arraynull选中值(单选为 key,多选为 keys 数组)
multipleBooleanfalse是否多选
treeCheckableBooleanfalse是否显示复选框(多选时自动 true)
treeCheckStrictlyBooleanfalse树复选框父子是否联动
treeDefaultExpandAllBooleanfalse树是否默认展开全部
treeExpandedKeysArraynull树默认展开的节点 key
onTreeExpandFunctionnull树节点展开时回调
onSearchFunctionnull搜索关键词变化时回调 (keyword) => void
onClearFunctionnull点击清除按钮时回调
allowClearBooleantrue是否显示清除按钮
maxTagCountNumber0多选标签最大显示数(0 不限制)
maxTagPlaceholderString|Functionnull标签溢出时的占位内容
maxTagTextLengthNumber0标签文本最大字符数(超出截断为…)
showCheckedStrategyString'SHOW_ALL'多选展示策略:SHOW_ALL / SHOW_PARENT / SHOW_CHILD
labelInValueBooleanfalsegetValue/setValue 是否返回 {value, label} 结构
treeNodeLabelPropString''指定显示标签的节点字段(默认取 titleField)
treeNodeFilterPropString''搜索匹配的节点字段(,默认取 titleField)
treeDataSimpleModeBooleanfalse是否使用扁平数据模式(,等价于 dataMode:'flat')
treeDataArray[]树数据(别名,等价于 data)
dataArray[]树节点数据
borderedBooleantrue是否显示边框
showArrowBooleantrue是否显示下拉箭头
listHeightNumber256下拉面板最大高度(px)
notFoundContentString''空数据时下拉面板的提示内容
dropdownMatchSelectWidthBooleantrue下拉面板宽度是否匹配触发器宽度
dropdownStyleObjectnull下拉面板自定义内联样式
dropdownClassNameString''下拉面板自定义 CSS 类名
getPopupContainerFunctionnull下拉面板挂载容器 (triggerNode) => HTMLElement
zIndexNumber1050下拉框层级
placeholderString'请选择'占位符文本
disabledBooleanfalse是否禁用

12.6 TreeSelect API 方法

方法参数返回说明
getValue()-Any|Array获取当前选中值
setValue(val)valvoid设置选中值
open()-void打开下拉框
close()-void关闭下拉框
checkAll()-void全选树节点
uncheckAll()-void取消全选
setLoading(key, loading)key, loadingBoolean设置树节点加载状态
scrollTo(key)keyBoolean滚动到指定树节点
search(keyword)keyword: Stringvoid搜索过滤树节点
destroy()-void销毁实例