v-for on a template 的一个小疑问

发布于 2022-09-07 20:48:13 字数 1464 浏览 10 评论 0

看官方文档说在使用 v-for 的时候,需要使用一个独一无二的 key 值来提升性能,说这是和虚拟 dom 有关。但是我在 template 标签上面绑定 v-for 进行循环的时候,绑定 key 值显示报错了,但是页面正常输出数据来了

  • <template> cannot be keyed. Place the key on real elements instead.

这个意思我大概知道,应该是说 key 应该在真是的元素上面。难道这种情况下的 v-for 就不用绑定 key 值吗?

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vuetest.html</title>
<link rel="stylesheet" href="./main.css">
<script src="./vue.js"></script>
</head>
<body>
<div id="app">
    <template v-for='(item,index) in list' :key='item.id'>
        <p>{{item.content}}</p>
        <span>{{item.id}}</span>
    </template>
</div>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            list:[
                {
                    id:0,
                    content:'小燕子是想气死我魏姐'
                },
                {
                    id:1,
                    content:'张雪迎工作室 澄清'
                },
                {
                    id:2,
                    content:'结婚登记率连续 4 年下降'
                },{
                    id:3,
                    content:'秦俊杰'
                }
            ],
        }
    })
</script>
</body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

婴鹅 2022-09-14 20:48:13

用key不能提升性能,是为了防止Vue默认的元素复用导致某些情况下出现数据绑定渲染问题,而template是虚拟节点,不存在复用,如果你想要绑定的话,给下面的p和span标签绑定就好,一般只需要给和数据绑定有关的元素绑定key值

风情万种。 2022-09-14 20:48:13

这就是一个反人类的设计,v-for既要:key,但又不能在template上加:key,那么循环必须放在html标签上而不能放在template上,生成一堆垃圾代码,不过如果v-for用在template上,不加:key,可以无视警告,或者把 eslint关了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文