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

Vue Date Picker插件检测到重复键错误问题求助

解决vue-date-picker的"Duplicate keys detected: 'day-'"警告

这个问题我之前处理过,本质是Vue检测到列表渲染时出现了重复的key值,根源出在插件内部生成日期项key的逻辑上——当某个日期项的标识值为空时,key就变成了'day-',多个项共用这个key就触发了警告,尤其是在选择日期后组件重新渲染时,这个问题更容易显现。

给你几个可行的解决思路:

  • 确保绑定值正确初始化
    检查你v-model绑定的日期变量,别让它初始化为undefined或null。比如在组件的data里这样初始化:

    data() {
      return {
        selectedDate: new Date() // 或者符合插件要求的日期字符串格式
      }
    }
    

    空的初始值会导致插件渲染日期项时无法生成唯一key,进而触发重复key警告。

  • 升级插件到最新版本
    这个bug很可能是插件旧版本的已知问题,去插件仓库看看有没有相关的issue修复记录,升级到最新的稳定版本大概率能解决这个问题。

  • 手动修复插件的key生成逻辑(本地引入时)
    如果你是把插件源码下载到本地使用的,可以找到渲染日期列表的代码部分,找到类似:key="'day-' + day"的行,修改成能保证唯一的key,比如使用日期的字符串标识:

    <!-- 假设原代码是这样 -->
    <div v-for="day in days" :key="'day-' + day">...</div>
    <!-- 修改为 -->
    <div v-for="day in days" :key="'day-' + day.dateString">...</div>
    

    只要每个day对象有唯一的属性(比如日期字符串、时间戳),用它来拼接key就能避免重复。

  • 临时规避:监听绑定值避免空状态
    如果暂时不想升级或修改插件,可以在父组件中监听绑定的日期变量,当它变为空时自动设置一个默认值:

    watch: {
      selectedDate(newVal) {
        if (!newVal) {
          this.selectedDate = new Date();
        }
      }
    }
    

    这样能避免插件在空值状态下渲染出重复key的日期项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:15:16