我是vue.js的新手。我有一个简单的index.vue,它试图连接到内容丰富的目录并显示内容丰富的条目。我在index.vue中的代码如下所示:
<template>
<div>
<!-- render data of the person -->
<h1>{{ person.fields.name }}</h1>
<!-- render blog posts -->
<ul>
<li v-for="post in posts">
{{ post.fields.title }}
</li>
</ul>
</div>
</template>
<script>
import {createClient} from '~/plugins/contentful.js'
const client = createClient()
Run Code Online (Sandbox Code Playgroud)
但是,当我从浏览器尝试localhost:3000时,它返回以下错误:
./pages/index.vue模块错误(来自./node_modules/eslint-loader/index.js):
C:\ Users \ admin \ pdress \ pages \ index.vue 7:7错误迭代中的元素期望具有'v-bind:key'指令vue / require-v-for-key
?1个问题(1个错误,0个警告)
如果有人可以帮助我进一步进行vue.js的学习,我将不胜感激。提前致谢
@ljubadr的建议是正确的。您需要这样做:
<li v-for="post in posts" v-bind:key="post.id">
<!-- OR USE SHORTCUT NOTATION -->
<li v-for="post in posts" :key="post.id">
Run Code Online (Sandbox Code Playgroud)
原因与性能有关。该属性key可帮助Vue确定列表中的唯一项。考虑排序的例子。如果您的用户界面具有用于帖子的排序按钮,则您post数组中项目的顺序将更改。但这是否意味着Vue将重新渲染整个列表?当然不是!使用:key它可以确定项目是否已经在UI上呈现。它只是简单地对DOM节点进行改组并节省了昂贵的渲染周期。
其次,如果在使用时列表中有复杂的组件v-for,但:key没有提供,则只要更改或重新排序列表,它就只会更改DOM,但不会破坏现有组件,并且可能导致局部状态不匹配。这就是为什么必须具有:key属性。
阅读Vue.js文档以获取更多信息。
注意:还请记住,使用v-for indexfor :key是一个坏主意,因为它在整个集合中并不是唯一的。
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |