You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VueJS+Vuetify实现日期标题仅显示一次的技术求助

解决Vuetify中重复日期标题及合并同日期项的问题

要解决同一日期重复显示标题,同时合并同日期列表项的问题,核心思路是先将数据按日期分组,再基于分组后的数据进行渲染——这样每个日期只会生成一次标题,且能轻松合并该日期下的所有内容。

步骤1:添加数据分组的计算属性

首先在组件中创建一个计算属性,把filteredItems按日期分组,让每个日期对应一组相关的meetup:

computed: {
  groupedMeetups() {
    return this.filteredItems.reduce((groups, meetup) => {
      // 确保日期格式统一(如果你的date是字符串,直接用即可;如果是时间戳,可转成统一格式字符串)
      const dateKey = meetup.date;
      if (!groups[dateKey]) {
        groups[dateKey] = [];
      }
      groups[dateKey].push(meetup);
      return groups;
    }, {});
  }
}

步骤2:重构模板渲染逻辑

接下来修改模板,遍历分组后的日期和对应的meetup数组,每个日期只渲染一次标题,同时合并显示该日期下的所有内容:

<template>
  <!-- 遍历分组后的日期与meetup列表 -->
  <div v-for="(meetups, date) in groupedMeetups" :key="date">
    <!-- 日期标题:显示TODAY或格式化后的日期 -->
    <v-subheader inset>
      <span v-if="isToday(new Date(date))">TODAY</span>
      <span v-else>{{ formatDate(date) }}</span>
    </v-subheader>
    
    <!-- 合并显示同日期的所有meetup内容 -->
    <div class="meetup-item">
      {{ formatDate(date) }} - {{ meetups.map(item => item.title).join(' - ') }}
    </div>
  </div>
</template>

步骤3:补充辅助方法

添加两个辅助方法,分别用于判断日期是否为今日,以及格式化日期为你需要的DD.MM.YYYY格式:

methods: {
  isToday(date) {
    const today = new Date();
    return date.getDate() === today.getDate() &&
           date.getMonth() === today.getMonth() &&
           date.getFullYear() === today.getFullYear();
  },
  formatDate(dateStr) {
    const date = new Date(dateStr);
    const day = date.getDate().toString().padStart(2, '0');
    const month = (date.getMonth() + 1).toString().padStart(2, '0');
    const year = date.getFullYear();
    return `${day}.${month}.${year}`;
  }
}

为什么这能解决问题?

原来的逻辑是逐个遍历filteredItems,每个meetup都会触发一次标题判断,导致同一日期的标题重复渲染。而分组后,每个日期只对应一组数据,标题自然只会显示一次;同时通过map和join方法,能轻松把同日期的所有内容合并成一行,完美匹配你想要的效果。

另外,之前的todaySubheader变量可以移除了——因为分组后今日的日期只会出现一次,标题也只会渲染一次,不需要额外标记控制显示。

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:35:47