当前位置:首页 > 前端教程

elementui树状

2026-03-06 00:17:02前端教程

ElementUI 树形组件使用指南

ElementUI 提供 el-tree 组件用于展示树形结构数据,支持节点选择、展开/折叠、懒加载等功能。

基础用法

通过 data 属性传入树形数据,默认使用 label 作为节点显示文本,children 作为子节点字段:

<el-tree :data="treeData"></el-tree>

对应数据格式:

treeData: [{
  label: '一级节点',
  children: [{
    label: '二级节点'
  }]
}]

自定义节点内容

使用 scoped slot 自定义节点内容和样式:

<el-tree :data="data">
  <span slot-scope="{ node, data }" class="custom-node">
    <span>{{ node.label }}</span>
    <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
  </span>
</el-tree>

节点选择配置

通过 show-checkbox 开启复选框,check-strictly 控制父子节点是否关联:

elementui树状

<el-tree
  :data="data"
  show-checkbox
  node-key="id"
  :check-strictly="true">
</el-tree>

懒加载模式

对于大数据量场景,使用 lazyload 方法实现动态加载:

<el-tree
  :props="props"
  :load="loadNode"
  lazy>
</el-tree>

对应方法:

loadNode(node, resolve) {
  if (node.level === 0) {
    return resolve([{ name: '根节点' }]);
  }
  // 异步加载子节点
  setTimeout(() => {
    resolve([{ name: '子节点' }]);
  }, 500);
}

常用事件处理

<el-tree
  :data="data"
  @node-click="handleNodeClick"
  @check-change="handleCheckChange">
</el-tree>

事件处理函数:

elementui树状

handleNodeClick(data, node) {
  console.log('点击节点:', data);
},
handleCheckChange(data, checked) {
  console.log('复选框变化:', data, checked);
}

自定义图标

通过 icon-class 属性或插槽自定义节点图标:

<el-tree :data="data">
  <i slot="expand-icon" class="el-icon-arrow-right"></i>
  <i slot="collapse-icon" class="el-icon-arrow-down"></i>
</el-tree>

节点过滤

使用 filter-node-method 实现节点过滤:

<el-input v-model="filterText"></el-input>
<el-tree
  :data="data"
  :filter-node-method="filterNode"
  ref="tree">
</el-tree>

过滤方法:

filterNode(value, data) {
  return data.label.includes(value);
}

可拖拽树

启用 draggable 属性实现节点拖拽:

<el-tree
  :data="data"
  draggable
  @node-drop="handleDrop">
</el-tree>

性能优化建议

大数据量情况下启用 :props="{ children: 'children', label: 'label' }" 明确指定字段名; 需要默认展开节点时使用 default-expanded-keys 而非 default-expand-all; 懒加载模式下合理设置 leaf 属性标识叶子节点。

标签: 树状elementui
分享给朋友:

相关文章

elementui流程

elementui流程

Element UI 流程设计 Element UI 提供了一套基于 Vue.js 的流程设计组件,适用于展示步骤流程、任务进度等场景。以下为关键实现方法和组件说明: 安装与引入 确保已安装 Ele…

比elementui

比elementui

对比 Element UI 的替代方案 Element UI 是一个基于 Vue.js 的流行组件库,但近年来开发者可能寻求更现代、更轻量或功能更丰富的替代品。以下是几个值得考虑的替代方案及其特点:…

elementui响应

elementui响应

响应式布局的实现 Element UI 提供了响应式布局的支持,主要通过栅格系统(Grid System)实现。栅格系统基于 flex 布局,允许页面在不同屏幕尺寸下自动调整布局。 栅格系统由 el…

elementui formdata

elementui formdata

使用 ElementUI 上传文件时处理 FormData ElementUI 的 el-upload 组件常用于文件上传,结合 FormData 可以方便地处理文件数据。以下是实现方法: 创建 F…

除了elementui

除了elementui

流行的 Vue UI 组件库推荐 Vant 面向移动端的轻量级组件库,支持 Vue 3 和 Vue 2,提供丰富的移动端交互组件,如轮播、下拉刷新、懒加载等。适合开发移动端 H5 或小程序。 A…

elementui toolbar

elementui toolbar

ElementUI Toolbar 组件 ElementUI 的 Toolbar 是一个用于快速构建工具栏的组件,通常用于表单操作、表格操作等场景。以下是关于 ElementUI Toolbar 的详…