SpringBlade/.claude/skills/avue-design/references/tree-component.md
2026-04-17 18:50:28 +08:00

3.4 KiB
Raw Blame History

avue-tree 树组件参考

基本用法

<avue-tree
  :option="option"
  :data="treeData"
  @node-click="nodeClick"
  @save="handleSave"
  @update="handleUpdate"
  @del="handleDel"
/>

Option 属性

属性 类型 默认值 说明
defaultExpandAll boolean false 默认展开所有
virtualize boolean false 虚拟DOM模式
dialogWidth string '50%' 弹窗宽度
formOption object - 自定义表单参考avue-form
menu boolean true 显示菜单栏
addBtn boolean true 新增按钮
editBtn boolean true 编辑按钮
delBtn boolean true 删除按钮
filter boolean true 显示搜索框
props object - 配置选项
lazy boolean false 懒加载

Props 属性

属性 类型 默认值 说明
label string 'label' 节点名称属性
labelText string '名称' 弹窗新增名称
children string 'children' 子节点属性
value string 'value' 节点值属性和nodeKey

数据结构

const treeData = ref([
  {
    label: '一级节点',
    value: '1',
    children: [
      { label: '二级节点A', value: '1-1' },
      { label: '二级节点B', value: '1-2' },
    ],
  },
])

事件

事件名 参数 说明
save (parent, data, done, loading) 新增回调
update (parent, data, done, loading) 编辑回调
del (data, done) 删除回调
before-open (done, type) 打开前回调
before-close (done, type) 关闭前回调
node-click (data, node, component) 节点点击
check-change (data, checked, hasCheckedChildren) 勾选变化

方法

方法名 参数 说明
filter (value) 筛选树节点
updateKeyChildren (key, data) 更新子节点
getCheckedNodes (leafOnly, includeHalfChecked) 获取勾选节点
setCheckedNodes (nodes) 设置勾选节点
getCheckedKeys (leafOnly) 获取勾选keys
setCheckedKeys (keys, leafOnly) 设置勾选keys
setChecked (key/data, checked, deep) 设置勾选状态
getHalfCheckedNodes - 获取半选节点
getHalfCheckedKeys - 获取半选keys
getCurrentKey - 获取当前选中key
getCurrentNode - 获取当前选中数据
setCurrentKey (key) 设置当前选中
setCurrentNode (node) 设置当前选中
getNode (data) 获取节点
remove (data) 删除节点
append (data, parentNode) 追加子节点
insertBefore (data, refNode) 在前面插入
insertAfter (data, refNode) 在后面插入

插槽

插槽名 说明
menu 按钮插槽
add-btn 新增按钮插槽
default 节点内容插槽

示例

多选模式

<avue-tree :option="{ ...option, multiple: true }" :data="treeData" @check-change="checkChange" />

懒加载

<avue-tree :option="option" :data="treeData">

const option = reactive({
  lazy: true,
  props: { label: 'name', value: 'id' },
})

// 在 treeLoad 中处理加载逻辑

拖拽

参考 default/tree/drag 示例。

权限控制

参考 default/tree/permission 示例。

虚拟模式

option: { virtualize: true }
// 适用于大数据量场景