• Vue3学习(十七) - 点击二级分类实现自动筛选功能


    写在前面

    怎么来诠释下现在的心情呢?

    算是比较复杂吧,我也想过关于自己个人问题的事,始终是无解的状态。

    35岁,变成了一个没有胆量、小心翼翼的年纪,甚至说慎重到说话都要反复思考的程度,先不说内耗问题了,真的就是负能量爆棚了,我有那么一阵极度怀疑自己丧失了和人沟通的能力。

    今天,我coding的时候,偶然听到爸妈对我婚姻的事,表现出了很大的无奈感。

    就给我一种,我没结婚,或者相亲失败,都是我的问题,我太挑了,难道结婚,真的就是随便一个人就行吗?

    上次给我介绍个地铁口卖烤地瓜的、大上次介绍的工厂打票的,各种给我洗脑,让我别太挑了,我想说我真的那么差吗?

    那一刻我真的觉得,为什么要结婚,再结合上段感情,我发现现在我很难去相信一个人了。

    如果人工智能真的可以做到极致,真的希望有个AI机器人另一半也不错,能和自己终老,陪伴一生,至少对我事绝对的忠诚,而不像人那么势力、物质、善变。

    分类点击切换显示对应数据

    1、任务拆解

    • 首页默认显示欢迎页面,点击欢迎时,显示欢迎组件,点击分类时,显示电子书
    • 点击某分类时,显示该分类下的电子书

    2、默认显示欢迎页,点击分类显示电子书

    这块呢,我们可以理解为,欢迎页面和电子书显示是互斥的,不能共同存在,用v-show来控制,再定一个响应式变量作为开关就可以实现了,示例代码如下:

    html
    <div class="welcome" v-show="isShowWelcome">
      <h1>欢迎来到六哥的学习空间!h1>
    div>
    <a-list
        v-show="!isShowWelcome"
        item-layout="vertical"
        size="large"
        :pagination="pagination"
        :grid="{ gutter: 20, column: 4 }"
        :data-source="ebooks"
    >
      <template #renderItem="{ item }">
        <a-list-item key="item.title">
          <template #actions>
      <span v-for="{ icon, text } in actions" :key="icon">
        <component :is="icon" style="margin-right: 8px"/>
        {{ text }}
      span>
          template>
          <a-list-item-meta :description="item.description">
            <template #title>
              <a :href="item.href">{{ item.name }}a>
            template>
            <template #avatar>
              <a-avatar :src="item.cover"/>
            template>
          a-list-item-meta>
          {{ item.description }}
        a-list-item>
      template>
    a-list>

    3、点击某分类,显示该分类下的电子书

    这里可以理解为,我点击左侧二级分类菜单时可以查询出对应的电子书,再次拆分需要做两件事:

    • 接口改造,根据查询电子书电子书后端接口增加分类参数
    • 通过点击菜单,传递分类Id,作为动态查询条件,并调用查询接口,实现精准查询
    3.1、后端改造

    这里需要在请求参数添加categoryId2字段,作为查询条件,示例代码如下:

    java
    private Long categoryId2;

    再对service改造,添加根据categoryId2进行查询,示例代码如下:

    java
    if (!ObjectUtils.isEmpty(ebookReq.getCategoryId2())){
        //相当于sql的like查询
        exampleCriteria.andCategory2IdEqualTo(ebookReq.getCategoryId2());
    }
    3.2、前端改造

    这里需要对handleClick进行处理,沿用互斥模式下的赋值,从而达到动态精确查询的目的,示例代码如下:

      /**
        * 菜单切换
        * @param value
      */
    const handleClick = (value:any) => {
      console.log("menu click",value)
      if(value.key==="welcome"){
        isShowWelcome.value=true
      }else{
        categoryId2=value.key
        isShowWelcome.value=false
        handleQueryEbook()
      }
    };
    
    /***
     * 查询电子书
     */
    const handleQueryEbook = () => {
      axios.get("/ebook/list", {
        params: {
          page: 1,
          size: 1000,
          categoryId2: categoryId2
        }
      }).then((response) => {
        const data = response.data;
        ebooks.value = data.content.list;
      });
    };

    效果:

    20240212_208d680abbcc7502_449754143859_92193457786295_published_mp4_264_hd_unlimit_taobao.gif

    写在最后

    凡事皆如此,人为何会有烦恼,是因为你有期待,有所求。

    当所求未被响应,所期待被辜负,就会有心理落差。

    所以最好的状态便是,不有求于别人,不被琐事所束缚,没欲望,没要求,和自己和解,也会活得很好。

    加油,可爱的自己!


    __EOF__

  • 本文作者: 久曲健的测试窝
  • 本文链接: https://www.cnblogs.com/longronglang/p/18028109
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    windows10通过L2TP VPN隧道连接到企业内网
    SpringBoot的使用
    vue3:3、项目目录和关键文件
    2022.9.14 加字段实战
    泛型的约束不止一面
    C++,顺序结构,选择结构,循环结构
    YUV与RGB 以及之间的转换
    git常用操作
    开发需要了解的23种设计模式 | 导言
    昨天同事lastday,把前端测试包扔线上去了
  • 原文地址:https://www.cnblogs.com/longronglang/p/18028109