当前位置:首页 > VUE

vue 实现树选项

2026-03-29 11:12:55VUE

实现树形结构的核心方法

使用 el-tree 组件(Element UI)快速构建树形选择器:

<el-tree
  :data="treeData"
  show-checkbox
  node-key="id"
  :props="defaultProps">
</el-tree>
data() {
  return {
    treeData: [{
      id: 1,
      label: '一级节点',
      children: [{
        id: 2,
        label: '二级节点'
      }]
    }],
    defaultProps: {
      children: 'children',
      label: 'label'
    }
  }
}

递归组件实现方案

自定义递归组件适合需要高度定制化的场景:

<tree-node :node="rootNode" @select="handleSelect"/>
// TreeNode.vue
<template>
  <div>
    <div @click="toggle">
      {{ node.label }}
    </div>
    <div v-show="isOpen" v-for="child in node.children">
      <tree-node :node="child"/>
    </div>
  </div>
</template>

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

数据格式处理技巧

扁平数据转树形结构的通用方法:

function buildTree(flatData) {
  const map = {}
  const roots = []

  flatData.forEach(item => {
    map[item.id] = { ...item, children: [] }
  })

  flatData.forEach(item => {
    if (item.parentId && map[item.parentId]) {
      map[item.parentId].children.push(map[item.id])
    } else {
      roots.push(map[item.id])
    }
  })

  return roots
}

性能优化建议

大数据量时采用虚拟滚动:

<el-tree
  :data="largeData"
  :height="400"
  virtual
  :props="defaultProps">
</el-tree>

事件处理示例

实现节点选择与展开回调:

vue 实现树选项

methods: {
  handleNodeClick(data) {
    console.log('选中节点:', data)
  },
  handleNodeExpand(data) {
    console.log('展开节点:', data)
  }
}

标签: 选项vue
分享给朋友:

相关文章

vue 实现href

vue 实现href

Vue 实现 href 的方法 在 Vue 中实现 href 功能可以通过多种方式,具体取决于需求场景。以下是几种常见的方法: 使用 <a> 标签 直接使用 HTML 的 <a&g…

vue动画实现

vue动画实现

Vue动画实现方法 Vue提供了多种方式实现动画效果,主要通过内置组件和第三方库完成。 使用<transition>组件 Vue内置的<transition>组件可以为元素添…

vue实现swiper

vue实现swiper

Vue 中实现 Swiper 的方法 安装 Swiper 依赖 在 Vue 项目中安装 Swiper 和相关依赖: npm install swiper vue-awesome-swiper 全局引…

vue 菜单实现

vue 菜单实现

Vue 菜单实现方法 在Vue中实现菜单功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-for动态生成菜单 通过数据驱动的方式动态渲染菜单项,适合菜单内容可能变化的场景: <t…

vue实现导入

vue实现导入

Vue 实现文件导入功能 使用 <input type="file"> 元素 在 Vue 模板中添加一个文件输入元素,绑定 change 事件处理函数。 <template>…

vue实现画廊

vue实现画廊

Vue实现画廊的基本方法 使用Vue.js实现画廊功能可以通过多种方式完成,以下是一种常见的实现方案: 安装必要依赖 npm install vue-gallery --save 引入组件并注册…