当前位置:首页 > VUE

vue实现表格树

2026-03-29 04:08:56VUE

Vue 实现表格树的方法

在 Vue 中实现表格树可以通过递归组件或第三方库(如 Element UI 或 Ant Design Vue)来完成。以下是几种常见的实现方式:

使用递归组件

递归组件是 Vue 中实现树形结构的常见方式。通过组件调用自身,可以轻松实现多层嵌套的表格树。

vue实现表格树

<template>
  <table>
    <thead>
      <tr>
        <th>名称</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      <tree-node v-for="node in treeData" :key="node.id" :node="node"></tree-node>
    </tbody>
  </table>
</template>

<script>
import TreeNode from './TreeNode.vue';

export default {
  components: { TreeNode },
  data() {
    return {
      treeData: [
        {
          id: 1,
          name: '节点1',
          children: [
            { id: 2, name: '子节点1' },
            { id: 3, name: '子节点2' }
          ]
        }
      ]
    };
  }
};
</script>

TreeNode.vue 中递归调用自身:

vue实现表格树

<template>
  <tr>
    <td>{{ node.name }}</td>
    <td>
      <button @click="toggleChildren">展开/折叠</button>
    </td>
  </tr>
  <tr v-if="showChildren && node.children">
    <td colspan="2">
      <table>
        <tbody>
          <tree-node 
            v-for="child in node.children" 
            :key="child.id" 
            :node="child"
          ></tree-node>
        </tbody>
      </table>
    </td>
  </tr>
</template>

<script>
export default {
  name: 'TreeNode',
  props: ['node'],
  data() {
    return {
      showChildren: false
    };
  },
  methods: {
    toggleChildren() {
      this.showChildren = !this.showChildren;
    }
  }
};
</script>

使用 Element UI 的树形表格

Element UI 提供了 el-tableel-tree 组件,可以结合使用实现树形表格。

<template>
  <el-table
    :data="tableData"
    row-key="id"
    :tree-props="{ children: 'children' }"
  >
    <el-table-column prop="name" label="名称"></el-table-column>
    <el-table-column prop="operation" label="操作"></el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        {
          id: 1,
          name: '节点1',
          children: [
            { id: 2, name: '子节点1' },
            { id: 3, name: '子节点2' }
          ]
        }
      ]
    };
  }
};
</script>

使用 Ant Design Vue 的树形表格

Ant Design Vue 的 a-table 组件也支持树形表格功能。

<template>
  <a-table
    :columns="columns"
    :data-source="data"
    :row-key="record => record.id"
    :pagination="false"
    :expand-icon-column-index="1"
  >
    <template #operation>
      <a-button>操作</a-button>
    </template>
  </a-table>
</template>

<script>
export default {
  data() {
    return {
      columns: [
        { title: '名称', dataIndex: 'name' },
        { title: '操作', slots: { customRender: 'operation' } }
      ],
      data: [
        {
          id: 1,
          name: '节点1',
          children: [
            { id: 2, name: '子节点1' },
            { id: 3, name: '子节点2' }
          ]
        }
      ]
    };
  }
};
</script>

注意事项

  • 递归组件需要注意性能问题,避免过深的嵌套层级。
  • 使用第三方库时,确保引入正确的版本和样式文件。
  • 树形表格的数据结构通常包含 children 字段,用于表示子节点。

标签: 表格vue
分享给朋友:

相关文章

vue实现语音

vue实现语音

Vue 实现语音功能的方法 使用 Web Speech API Vue 可以结合 Web Speech API 实现语音识别和合成功能。Web Speech API 包含 SpeechRecognit…

vue element实现

vue element实现

Vue Element UI 实现 Vue Element UI 是基于 Vue.js 的组件库,提供丰富的 UI 组件,适合快速开发企业级中后台产品。以下是一些关键实现方法和步骤: 安装 Vue…

vue实现granfana

vue实现granfana

Vue 实现类似 Grafana 的仪表盘 要在 Vue 中实现类似 Grafana 的仪表盘功能,需要结合数据可视化库、状态管理和 UI 组件。以下是关键步骤和推荐工具: 数据可视化库 使用 E…

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…

vue原理实现

vue原理实现

Vue 原理实现的核心机制 Vue.js 的核心原理基于响应式系统、虚拟 DOM 和模板编译。以下是其核心实现机制的分解: 响应式系统 Vue 使用 Object.defineProperty(Vu…

vue实现换肤

vue实现换肤

使用 CSS 变量实现换肤 在 Vue 项目中,可以通过 CSS 变量(Custom Properties)动态切换主题色。CSS 变量可以在运行时修改,适合实现换肤功能。 定义全局 CSS 变量:…