在VUE中报Duplicate keys detected: '0'. This may cause an update error的报错原因以及解决办法

摘要:
问题描述vue版本:2.x首先Duplicatekeysdetected:'0'.Thismaycauseanupdateerror是vue发现key不是唯一的而引发的错误.译为中文大概是:检测到重复键:'0'.'0'可能会导致一个更新错误.解决办法网上找的其他也有一些.通过手动进行修改:key进而解决,比如说进行拼接字符串.因为为了解决不报错,而手动修改了数据.个人感觉不应该是这样的.最后找到的
问题描述

vue版本 : 2.x

首先Duplicate keys detected: '0'. This may cause an update error是vue发现key不是唯一的而引发的错误.

译为中文大概是 : 检测到重复键 : '0'. '0'可能会导致一个更新错误.

解决办法网上找的其他也有一些.通过手动进行修改:key进而解决,比如说进行拼接字符串.因为为了解决不报错,而手动修改了数据.个人感觉不应该是这样的.

最后找到的问题所在:在同一层DOM节点上,vue发现key不是唯一的.是会报错.但是如果不是在同一层DOM使用v-for循环,则不会报错.所以呢,如果不在同一层DOM上进行for循环,就可以保证了key的唯一性.(对于:key的作用还没有接触到.)

而解决办法:

我想到的就是多加一层html标签,但是这样会多出一些没有语义的标签,仅是为了保证key的唯一性而添加标签,但是相比于手动拼接字符串我更愿意这样.

或者是网上推荐的手动拼接.但是:key是手动进行修改的.如果忘记:key的数据和本来的数据是不一样的.在后期维护起来不是那么方便.

示例代码
    <script type="text/javascript" src="http://t.zoukankan.com/vue_localtion/vue.js"></script>
</head>

<body>
    <div id="app">
        <p v-for='(item,index) in cyclicData' :key='index'>{{item}}</p>
        <hr>
        <div><!--如果去掉这一层div则会报错.因为在同一层DOM节点上 :key的value有重复的-->
            <p v-for='(item,index) in sortCyclicData' :key='index'>{{item}}</p>
        </div>
    </div>

    <script>
        let app = new Vue({
            el: '#app',
            data: {
                cyclicData: [1, 8, 3, 7, 5, 6],
            },
            computed: {
                sortCyclicData: function () {
                    return this.cyclicData.sort(function (num1, num2) {
                        return num1 - num2;
                    })
                }
            },
        })
    </script>
参考

免责声明:文章转载自《在VUE中报Duplicate keys detected: '0'. This may cause an update error的报错原因以及解决办法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ruby中rsa加密加签以及md5、hash加密以及des加解密方法整理万能Ghost系统制作教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android : apk签名的多种方法以及key的配置

  方法一:使用Android SDK中的签名工具给apk签名:   (1)Android源码的 build/target/product/security/ 目录下有 media.pk8、media.x509.pem、platform.pk8、platform.x509.pem、shared.pk8、shared.x509.pem、testkey.pk8...

vscode如何配置ts的lint,如何配置才能让eslint和prettier不冲突一键格式化代码(vue开发使用)

最近在使用ts,发觉tslint在vscode上使用很不方便,不如eslint一键格式化高效,就想着能不能配置下vscode让其像写js一样爽 这篇文章主要解决2个问题,第一个是如何让vscode使用ts的lint,第二个是如何配置才能让eslint和prettier这2个代码格式化的vscode插件不互相冲突 vscode使用ts的lint 首先ts的l...

vue被部署到子(二级)目录

需求有的时候,你的域名很珍贵,除了二级域名外。你还可以将你的项目部署在服务器二级目录下,这样的话,就可以部署多个项目了。比如说,我有一个域名为dshvv.com的服务器,我想部署两个项目:12306项目:http://dshvv.com/12306淘宝项目:http://dshvv.com/taobao问题普通项目不会有问题,但是如果是单页项目,而且单页项...

部分cocoscreator左右移动代码

cc.Class({extends: cc.Component, properties: { // 主角跳跃高度 jumpHeight: 0, // 主角跳跃持续时间 jumpDuration: 0, // 最大移动速度 maxMoveSpeed: 0, // 加速度 accel: 0, // 跳跃音效资源 jumpAudio: { default: nu...

实现一个竖直的显示表头的表格(vue版本)

今天遇到一个问题,实现这样一个竖直的显示表头的表格,如下图。默认显示两列。 vue实现代码如下:   tableComponent.vue:   <template> <table class="mailTable" :style="styleObject" v-if="s_showByRow"> <tr v-...

vue安装及升级

先装好note.js 安装过程很简单,一直点下一步就ok了。1.1我们通过打开命令行工具(win+R),输入node -v查看node的版本,若出现相应的版本号说明你安装成功了  1.2.npm包管理器,是集成在node中的,所以安装了node也就有了npm,直接输入 npm -v 命令,显示npm的版本信息 现在node环境已经安装完成了,npm包管...