vue-language-server:迭代中的元素期望具有' v-bind:key'指令

时间:2017-12-02 13:26:38

标签: vue.js

Vue.js 2.5 / Visual Studio代码编辑器

我收到了这个警告,我怎么能摆脱它呢?

    <template :slot="slotName" slot-scope="props" v-for="slotName in  $scopedSlots?Object.keys($scopedSlots):null">
       <slot :name="slotName" :row-data="props.rowData" :row-index="props.rowIndex" :row-field="props.rowField"></slot>
  </template>

我尝试添加索引,但它没有解决此问题

<template :slot="slotName" slot-scope="props" v-for="(slotName, index) in  $scopedSlots?Object.keys($scopedSlots):null" :key="index">
  <slot :name="slotName" :row-data="props.rowData" :row-index="props.rowIndex" :row-field="props.rowField"></slot>
  </template>

7 个答案:

答案 0 :(得分:11)

您可以放心地忽略该警告。它来自vue的eslint插件,它是一个bug,got fixed a month ago但是vetur仍然使用旧版本的插件。

必须将键属性添加到传递给组件的内容

答案 1 :(得分:9)

这个问题已经很好回答,但是我想添加一个示例和指向文档的链接:

此结构导致上述错误:

<div v-for="(item, index) in items">
    {{index}}. {{item.name}}
</div>

您可以通过更改如下语法来修复它:

<div v-for="(item, index) in items" :key="item.id">
    {{index}}. {{item.name}}
</div>

如果您的商品没有任何唯一的ID字段,则只需编写:key="item"。 但是,出于性能原因,您的数据应有一个id字段。

https://vuejs.org/v2/guide/list.html#key

答案 2 :(得分:2)

希望这行得通。

父组件

<template>
  <ul>
    <VideoListItem v-for="video in videos" v-bind:key="video.title" v-bind:video="video"></VideoListItem>
  </ul>
</template>

<script>
import VideoListItem from "./VideoListItem";

export default {
  name: "VideoList",
  components: { VideoListItem },
  props: ["videos"]
};
</script>

子组件

<template>
  <li>{{ video.snippet.title}}</li>
</template>

<script>
export default {
  name: "VideoListItem",
  props: ["video"]
};
</script>

<style scoped>
</style>

================================================ =======

听=>每当您提供v-for属性时,我们都需要提供v-key属性。 增强了重新发布我们的项目列表的功能。

答案 3 :(得分:1)

这对我有用

<div :class="sliderClass()" v-for="(slide,index) in slides" :key="index">
<div :class="sliderClass()" v-for="slide in slides" :key="slide.SliderID">

答案 4 :(得分:1)

假设您要遍历名为 users 的数组,则可以执行以下操作:

<div v-for="(user,id) in users" :key="id" >
      <div class="card" >
       ...........................
      </div>
</div>

答案 5 :(得分:0)

<li class="list-group-item" v-for="server in Servers" v-bind:key="server">    

像这样在标签中指定唯一键。

答案 6 :(得分:0)

让我们在这里看一个简单的例子!

我正在构建待办事项列表应用程序。因此,我构建了一个名为Todo的组件,并在我的TodoList组件内部将这样调用Todo组件

    <todo v-for="todo in todos" v-bind:key="todo" v-bind:todo="todo"></todo>

希望有帮助!