通过遍历数组进行渲染dom时【图一】,有时控制台会报这个错Duplicate keys detected【图二】,但是页面没有收到影响,还可以正常进行逻辑操作,是为什么呢?
<el-select key="UniqSelect" :name="name" size="small" v-model="value1" placeholder="请选择" @change="getSelectValue">
<el-option :disabled="item.disabled" v-for="item in options" :key="item.attrValue" :label="item.attrValueName" :value="item.attrValue">
</el-option>
</el-select>
原因:报错是因为重复的key值为1102的节点,上述下拉框选项是由于遍历数组options渲染出来的,并且将item.attrValue赋给key值,通过查询数据,原来数组里边有重复的值,所以造成这样的错误。
原理:由于dom节点定义的key值是表示唯一标识,不允许重复,所以当遍历dom节点时,对渲染的数据进行去重。
解决办法:去重的话,可以自己手写,但是我用到的一个好用的一个插件强烈推荐,就是lodash.js,里边有很多方法对数组和对象进行处理
参考:https://www.html.cn/doc/lodash/#_uniqarray