Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 通过Vue中的组件循环-迭代中的自定义元素需要';v-bind:key';指令_Vue.js - Fatal编程技术网

Vue.js 通过Vue中的组件循环-迭代中的自定义元素需要';v-bind:key';指令

Vue.js 通过Vue中的组件循环-迭代中的自定义元素需要';v-bind:key';指令,vue.js,Vue.js,我正在尝试创建多个自定义组件(只是作为概念证明,所以没有什么比将同一个组件复制5次更有趣的了),但我遇到了以下错误: 迭代中的自定义元素需要“v-bind:key”指令 下面是循环的代码(我很确定问题出在哪里: <template> <div> <app-server-status v-for="server in 5"></app-server-status> </div> </template&

我正在尝试创建多个自定义组件(只是作为概念证明,所以没有什么比将同一个组件复制5次更有趣的了),但我遇到了以下错误:

迭代中的自定义元素需要“v-bind:key”指令

下面是循环的代码(我很确定问题出在哪里:

<template>
    <div>
        <app-server-status v-for="server in 5"></app-server-status>
    </div>
</template>

<script>
    import ServerStatus from './ServerStatus'

    export default {
        components: {
            'app-server-status': ServerStatus
        }
    }
</script>

从“/ServerStatus”导入服务器状态
导出默认值{
组成部分:{
“应用程序服务器状态”:服务器状态
}
}
现在,从我所做的阅读中,我可以看到,由于在Vue的更高版本中使用组件的局限性,我需要一个密钥-只是不太确定正确的方法。有人能告诉我,我需要如何修改该特定示例以仅显示该组件5次吗

旁注:下面的代码给出了我在应用程序中需要的结果,但VSCode仍然给了我一个错误(预期“v-bind:key”指令使用“v-for”指令定义的变量):


好的,在对代码进行了一些修补之后,我发现以下代码可以正常工作并且不会抛出错误:

<template>
    <div>
        <app-server-status v-for="server in 5" v-bind:key="server"></app-server-status>
    </div>
</template>

<script>
    import ServerStatus from './ServerStatus'

    export default {
        components: {
            'app-server-status': ServerStatus
        }
    }
</script>

从“/ServerStatus”导入服务器状态
导出默认值{
组成部分:{
“应用程序服务器状态”:服务器状态
}
}
可能应该是:

<app-server-status v-for="(server, index) in 5" v-bind:key="index"></app-server-status>
文档:

建议在任何时候提供带有
v-for
key
属性 可能,除非迭代的DOM内容很简单,或者 故意依赖默认行为来获得性能增益

由于它是Vue识别节点的通用机制,因此
还有其他用途,这些用途与
v-for
没有特别的联系,正如我们所说的 稍后将在指南中看到

不要将对象和数组等非基本值用作v-for键。 改用字符串或数值。

有关
属性的详细用法,请参阅


我通过向元素添加:key属性修复了相同的错误

<app-server-status v-for="server in 5" :key="server"></app-server-status>

当然,v-for“推荐”使用键绑定,但在某些情况下我不需要/不想要它。在vue.config.js中添加此子句让我的生活再次变得平静:

  module.exports = {
    // this may not be a good option for beginners
    // as it will disable linting.
    lintOnSave: false
  }

可能是?所以可能不是?所以这只是一个猜测?通常应该使用迭代对象提供的唯一标识符。例如,server.id。对于数组键,在删除或重新排序数组元素时,可能会出现反应性问题。缺少ServerStatus文件扩展名.vue
  module.exports = {
    // this may not be a good option for beginners
    // as it will disable linting.
    lintOnSave: false
  }