Vue3学习(16) - 左侧显示分类菜单

写在前面

和大家不太一样,我觉得今年的自己更加relax,没有亲戚要走,没有朋友相聚,也没有很好的哥们要去叙旧,更没有无知的相亲,甚至可以这么说没有那些闲得慌的邻居。

也可以说是从今天开始,算是可以进入自己的小世界,做自己想做的事,看看书,学习一下。

生活的精髓在于善待自己,用心感受每一刻的欢愉与宁静!

人生于世上有几个知己,多少友谊能长存,愿友谊常青!

菜单显示分类名

那么如何让菜单正常显示菜单内容呢?

1、任务拆解

  • 在页面加载就查出所有分类
  • 通过垂直菜单遍历出所有分类内容并显示

2、在页面加载就查出所有分类

即在onMounted种通过handleQueryCategory,此处可以复用分类列表中的代码,示例代码如下:

javascript 复制代码
const level1 =  ref();
let categorys: any;
/**
 * 查询所有分类
 **/
const handleQueryCategory = () => {
  axios.get("/category/all").then((response) => {
    const data = response.data;
    if (data.success) {
      categorys = data.content;
      console.log("原始数组:", categorys);

      level1.value = [];
      level1.value = Tool.array2Tree(categorys, 0);
      console.log("树形结构:", level1.value);
    } else {
      message.error(data.message);
    }
  });
};

onMounted(() => {
    handleQueryCategory();
}

3、通过垂直菜单遍历出所有分类内容并显示

这块还是考察的是v -for循环遍历的知识点,示例代码如下:

javascript 复制代码
<a-sub-menu v-for="item in level1" :key="item.id">
  <template v-slot:title>
    <span><user-outlined />{{item.name}}</span>
  </template>
  <a-menu-item v-for="child in item.children" :key="child.id">
    <MailOutlined /><span>{{child.name}}</span>
  </a-menu-item>
</a-sub-menu>

4、效果

写在最后

这部分的代码,是纯前端了, 代码扔太久了,只能看懂,但是自己写还是写不出来,我想这种状态,可能是很多新手,都会面临的问题吧。

有没有好的解决办法呢?

没有,在成功这条路上,永远是没有捷径可言的。

如不适应,去练习,大量练习,直到完全适应它即可。