最近在vue项目中遇到一个报错,虽然不影响使用,但是报错还是得解决的

vue.esm.js?915d:628 [Vue warn]: Duplicate keys detected: 'tab-定时任务补偿'. This may cause an update error.

found in

---> <TabNav> at packages/tabs/src/tab-nav.vue
       <ElTabs> at packages/tabs/src/tabs.vue
         <Practice> at src/view/practice.vue
           <App> at src/App.vue
             <Root>

一进入某页面,就会冒出这么一长串的报错,这个是由于v-for循环里,key值可能重复了,所以会报这个错。查看了一下页面代码:

查看了一下页面代码:

<el-tabs v-model="activeName" type="card" @tab-click="handleClick" editable  @tab-remove="removeTab">
  <el-tab-pane :label="item" :name="item" v-for="(item, index) in editableTabs" :key="index">{{item}}</el-tab-pane>
</el-tabs>
removeTab(targetName) {
  console.log(targetName)
  this.editableTabs.forEach((item, index)=>{
    if(targetName === item){
        this.editableTabs.splice(index, 1)
    }
  })
}

key值是必须唯一的,如果重复就会报错 当removeTab事件时 index会发生变化;

不过直接用index作为key并不是一个好的选择,这样做不利于性能的提升,可以使用item的唯一id作为key更好! 就不会发生这种事情了;

Logo

前往低代码交流专区

更多推荐