当前位置:首页 > VUE

vue实现table嵌套table

2026-02-25 03:14:40VUE

Vue 实现 Table 嵌套 Table

在 Vue 中实现表格嵌套表格的功能,可以通过组件化和递归的方式实现。以下是具体实现方法:

模板结构

<template>
  <table>
    <thead>
      <tr>
        <th v-for="header in headers" :key="header">{{ header }}</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="(row, index) in data" :key="index">
        <td v-for="(value, key) in row" :key="key">
          <template v-if="Array.isArray(value)">
            <nested-table :data="value" :headers="nestedHeaders" />
          </template>
          <template v-else>
            {{ value }}
          </template>
        </td>
      </tr>
    </tbody>
  </table>
</template>

组件定义

<script>
export default {
  name: 'NestedTable',
  props: {
    data: {
      type: Array,
      required: true
    },
    headers: {
      type: Array,
      required: true
    }
  }
}
</script>

使用示例

<template>
  <nested-table 
    :data="tableData" 
    :headers="['Name', 'Age', 'Orders']" 
  />
</template>

<script>
import NestedTable from './NestedTable.vue'

export default {
  components: {
    NestedTable
  },
  data() {
    return {
      tableData: [
        {
          name: 'John',
          age: 25,
          orders: [
            { id: 1, product: 'Laptop', price: 999 },
            { id: 2, product: 'Phone', price: 599 }
          ]
        },
        {
          name: 'Jane',
          age: 30,
          orders: [
            { id: 3, product: 'Tablet', price: 399 }
          ]
        }
      ]
    }
  }
}
</script>

样式处理

<style scoped>
table {
  border-collapse: collapse;
  width: 100%;
}
th, td {
  border: 1px solid #ddd;
  padding: 8px;
}
</style>

注意事项

  • 确保嵌套数据有明确的父子关系
  • 为每个表格设置不同的headers属性
  • 使用scoped样式避免样式冲突
  • 考虑添加展开/折叠功能提升用户体验
  • 对于大数据量建议使用虚拟滚动优化性能

扩展功能

可以通过添加props控制嵌套深度限制

props: {
  maxDepth: {
    type: Number,
    default: 3
  },
  currentDepth: {
    type: Number,
    default: 0
  }
}

在模板中添加深度判断

vue实现table嵌套table

<template v-if="Array.isArray(value) && currentDepth < maxDepth">
  <nested-table 
    :data="value" 
    :headers="nestedHeaders"
    :current-depth="currentDepth + 1"
  />
</template>

标签: 嵌套vue
分享给朋友:

相关文章

vue实现购物按钮

vue实现购物按钮

Vue 购物按钮实现方法 基础按钮实现 使用 Vue 的模板语法创建基础按钮组件,绑定点击事件处理购物逻辑: <template> <button @click="addToC…

vue里实现增删改查

vue里实现增删改查

在Vue中实现增删改查 数据初始化 在Vue组件的data中定义初始数据和表单绑定的变量: data() { return { items: [ { id: 1, name:…

vue树形实现

vue树形实现

Vue 树形组件实现方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方法。通过组件调用自身的方式,可以轻松构建多层嵌套的树形结构。 <template> &l…

简单实现vue

简单实现vue

Vue 的基本实现 创建一个简单的 Vue 应用需要引入 Vue 库,并编写基本的模板和数据绑定逻辑。 <!DOCTYPE html> <html lang="en"> &l…

vue实现公告

vue实现公告

Vue 实现公告功能的方法 公告功能通常需要实现滚动展示、自动切换或固定显示的效果。以下是几种常见的实现方式: 使用 marquee 标签实现滚动公告 <template> <…

vue实现list

vue实现list

Vue 实现列表渲染 在 Vue 中,可以使用 v-for 指令来渲染列表。v-for 指令基于一个数组或对象来渲染一个列表,可以遍历数组或对象的属性。 基本列表渲染 <template>…