我有一个列表中有v-for的组件,我想在列表中有变化时检查该组件是否选中,并更新选中状态。
// This works but not the suggested way to do it.
const list = computed(() => (value) => {
return array.value.find((item) => item.id === value)
})
// Component inside template
<somecomponent v-for='item in Items' :checked='list(item.id)' />
2条答案
按热度按时间mznpcxlj1#
为了达到这个目的,我添加了一个计算属性,返回一个包含id的数组,如果它们被选中,然后使用包含来检查id是真还是假。
这里的Items和array都有不同的值和相同的id,所以不能直接与include比较。
当checkedList在值改变时更新时,传递给组件的值也会被vue更新。
k3bvogb12#
您可以使用
array.some()
来实现这一点:那么您可能不需要computed属性,因为
array
已经是一个ref,因此是被动的。还建议在v-for循环中始终使用
:key
。