Vue,前端动态生成的列表,在生成的时候应该用什么作为key呢?

发布于 2022-09-13 01:23:07 字数 330 浏览 22 评论 0

已知,用index作为v-for循环渲染列表的key值是不建议的

一般情况下,如果是查询列表,我是把id值绑定为key的

但如果是前端动态生成的列表,在第一次新建的时候,该列表是没有id值的
(需要第一次保存之后再查询,后台接口会返回id值)

再加上列表组件新建和查询的时候是公用的同一个组件(只是初始化的list的值不同),那么在第一次新建的时候没有id值,此时该如何处理呢?

<ul>
  <li v-for="i in list" :key="i.id"></li>
</ul>

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

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

发布评论

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

评论(2

忘羡 2022-09-20 01:23:07

这样应该可以了,变量名+索引,或者功能描述啥的+索引

 <li v-for="(item, index) in list" :key="'list' + index"></li>
看春风乍起 2022-09-20 01:23:07

在下倒有一个万能的雕虫小技:

data(){
    return {
        idStore: new WeakMap(),
        idSeed: 0
    }
},
filters: {
    allocId(item){
        const { idStore } = this;
        const curId = idStore.get(item);
        if(curId) return curId;
        const nextId = ++ this.idSeed;
        idStore.set(item, nextId);
        return nextId
    }
}
<li v-for="i in list" :key="i|allocId"></li>

这样就能自动识别对象,为之分配唯一的 ID。
不过更好的方案是拿到数据之后预处理一遍,给每项分配一个 ID。

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