vue - [Vue warn]: Duplicate keys detected: ‘0‘. This may cause an update error.

问题描述:
vue项目中,对表单数组赋值时,控制台抛出警告:
在这里插入图片描述

问题代码:
在这里插入图片描述
问题分析:
1、Vue 要求每个虚拟 DOM 节点必须有唯一的 key。该警告信息通常出现在使用v-for循环的场景中,多个同级节点使用了相同的key作为唯一标识,导致Vue无法识别。
2、问题代码中,外层表单el-form中,有两个同级的el-row列表,在对el-form进行赋值时,同时会对内层的这两个el-row列表进行赋值;此时这两个列表的元素,都使用了index,也就是列表的索引作为key,就会出现两个列表的第一个元素的key都是0,第二个元素的key又都是1。。。依次类推,不同的元素使用相同的key,就会出现冲突,从而产生了报警。

解决方法:
在使用v-for循环时,使用真正能够唯一标识元素的特征作为key,如下图:
在这里插入图片描述
注意:
这里两个列表分别使用了不相干的两个id字段作为元素的key,通常来说是没有问题的;但是如果有两行数据,一个使用的 payPlanId 是1001,而另一个使用的 relationId 恰好也是1001,此时仍然会触发警告。
所以判断是否重复key,不仅仅是key所使用的字段能够区别开,更重要的所产生的实际值不能重复。 如果遇到上述特殊情况产生了警告,可以手动拼接key使其值唯一,比如最后一个el-row,使用 :key=“prRelation-${item.relationId}”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值