vue for 循环中item没有唯一值,但又是表单渲染, key如何赋值
如果不赋值,或者赋index的话,dom更新后其中的值是不对的。必须要item中设置唯一值么
<template>
<view>
<div>
<button @click="add">添加</button>
</div>
<ul>
<li v-for="(item, i) in list" :key="JSON.stringify(item)">
<input type="checkbox"> {{ item.name }}
</li>
</ul>
</view>
</template>
<script>
export default {
data() {
return {
list: [{
// id: 1,
name: '李斯'
},
{
id: 2,
name: '吕不韦'
},
{
// id: 3,
name: '李斯'
}
]
}
},
methods: {
add() {
// 注意这里是unshift
this.list.unshift({
id: ++this.newId,
name: this.name
})
this.name = ''
}
}
}
</script>
2 个回复
FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866
一般是index
n***@163.com
用你代码的i
[已删除] (作者)
你随便百度一个试试,i加不加没有意义的
2022-03-31 17:18
[已删除] (作者)
我更新了下问题,有代码,你试试
2022-03-31 17:20
n***@163.com
回复 [已删除]: 你用这个key主要是干什么啊,我们一般就是付一个不重复的值,显示而已,如果需要删除和修改的话,这个和你数组的index也是能对应的,如果数组变了话,这个也会变的,这时你就不能用之前的你存储的index来定位了。
2022-04-01 11:10
[已删除] (作者)
回复 n***@163.com: 比如表单,你试试我的demo
2022-04-01 11:24
n***@163.com
回复 [已删除]: 你这种用unshift,只能自己生成唯一码赋值,比如简单的就生成uuid
2022-04-01 11:55