当前位置:首页 > JavaScript

js实现四层树形菜单

2026-04-04 21:20:49JavaScript

实现四层树形菜单的方法

数据结构设计

使用嵌套对象或数组表示树形结构,每个节点包含idlabelchildren等属性。例如:

const treeData = [
  {
    id: 1,
    label: '一级菜单',
    children: [
      {
        id: 11,
        label: '二级菜单',
        children: [
          {
            id: 111,
            label: '三级菜单',
            children: [
              { id: 1111, label: '四级菜单' }
            ]
          }
        ]
      }
    ]
  }
];

递归渲染组件

通过递归组件渲染每一层菜单,Vue/React示例:

// React组件示例
function TreeNode({ node }) {
  return (
    <li>
      {node.label}
      {node.children && (
        <ul>{node.children.map(child => <TreeNode node={child} />)}</ul>
      )}
    </li>
  );
}

样式控制

使用CSS控制缩进和展开状态:

.tree ul {
  padding-left: 20px;
}
.tree li {
  list-style-type: none;
  cursor: pointer;
}

交互功能实现

添加展开/折叠功能:

function toggleExpand(node) {
  node.isExpanded = !node.isExpanded;
  // 触发视图更新
}

动态加载优化

对于大数据量可采用懒加载:

js实现四层树形菜单

async function loadChildren(parentId) {
  const res = await fetch(`/api/menu?parent=${parentId}`);
  return res.json();
}

完整示例代码

// Vue组件示例
Vue.component('tree-menu', {
  props: ['node'],
  template: `
    <li>
      <span @click="toggle">{{node.label}}</span>
      <ul v-if="showChildren">
        <tree-menu v-for="child in node.children" :node="child"/>
      </ul>
    </li>
  `,
  data() {
    return { isExpanded: false }
  },
  computed: {
    showChildren() {
      return this.node.children && this.isExpanded
    }
  },
  methods: {
    toggle() {
      this.isExpanded = !this.isExpanded
    }
  }
})

标签: 四层菜单
分享给朋友:

相关文章

vue菜单tab实现

vue菜单tab实现

实现Vue菜单Tab的步骤 在Vue中实现菜单Tab功能,可以通过动态组件或条件渲染来实现。以下是几种常见的方法: 使用动态组件 动态组件允许根据当前选中的Tab动态切换显示内容。定义一个组件数组…

css制作下拉菜单

css制作下拉菜单

使用纯CSS制作下拉菜单 通过HTML和CSS可以创建无需JavaScript的下拉菜单,主要利用:hover伪类和display属性控制显示隐藏。 HTML结构示例: <div class…

vue实现联动菜单

vue实现联动菜单

实现联动菜单的基本思路 在Vue中实现联动菜单的核心在于数据绑定和事件监听。通过v-model绑定下拉菜单的值,利用watch或computed监听变化,动态更新下一级菜单的选项。 基础实现方法 创…

vue实现左侧菜单

vue实现左侧菜单

实现左侧菜单的基本结构 在Vue中实现左侧菜单通常需要结合组件化思想和路由功能。使用<el-menu>组件(Element UI)或自定义组件搭配Vue Router是常见方案。 <…

js实现菜单导航

js实现菜单导航

实现基础菜单导航结构 使用HTML和CSS创建菜单的基本结构,再通过JavaScript添加交互功能。HTML部分通常使用<ul>和<li>标签构建层级: <nav i…

菜单树实现vue

菜单树实现vue

实现 Vue 菜单树的方法 递归组件实现 使用 Vue 的递归组件特性可以轻松实现菜单树结构。递归组件允许组件在模板中调用自身,适用于树形结构的数据展示。 <template> &l…