vue2 element-ui构造菜单树

<script>
function buildMenuTemplate(h, menus) {
  return menus.map((menu) => {
    let html = null;

    if (menu.children && menu.children.length > 0) {
      let childrenEl = buildMenuTemplate(h, menu.children)
      html = (
          <el-submenu index={String(menu.id)} key={menu.id}>
            <template slot="title">
              <i class={menu.iconCls}></i>
              <span slot="title">{menu.text}</span>
            </template>
            {childrenEl}
          </el-submenu>
      );
    } else {
      html = (
          <el-menu-item index={menu.id} key={menu.id}>
            <i class={menu.iconCls}></i>
            <span slot="title">{menu.text}</span>
          </el-menu-item>
      );
    }
    return html;
  });
}
export default {
  name: "TreeMenu",
  props: ["menus"],
  methods: {
    onMenuItemSelect(menuIndex) {
      this.$emit('select', menuIndex)
    }
  },
  render(createElement) {
    let el = buildMenuTemplate(createElement, this.menus)
    return (
        <el-menu on-select={this.onMenuItemSelect}>
          {el}
        </el-menu>
    );
  }
}
</script>

posted on 2022-04-11 22:37  路过君  阅读(2)  评论(0编辑  收藏  举报

导航