我在主页使用了组件,然后使用v-for循环渲染出组件。删除某个组件时,使用splice(index,1)的方式删除该元素。对应的数组元素发生了改变,但是图形渲染却出了问题:无论我删除哪个元素,界面上只会默认删除最后一个元素。
所以我想问问这是什么原因导致的呢?有什么好的解决办法?
组件渲染:
数组结构:
数据删除操作:
我在主页使用了组件,然后使用v-for循环渲染出组件。删除某个组件时,使用splice(index,1)的方式删除该元素。对应的数组元素发生了改变,但是图形渲染却出了问题:无论我删除哪个元素,界面上只会默认删除最后一个元素。
所以我想问问这是什么原因导致的呢?有什么好的解决办法?
组件渲染:
数组结构:
数据删除操作:
9 回答1.7k 阅读✓ 已解决
6 回答943 阅读
3 回答2.6k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
4 回答949 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
3 回答856 阅读
我在别人的问题上找到了解决方法了,出现这种情况的主要原因在于key的绑定问题,v-for只负责循环组件,而组件的唯一标识却是用key来确定的。而我这里只是单纯的使用字符串来指定每一个组件的key,而没有与数组中元素挂钩,因此当删除数组元素时,vue会采用一种叫做’就地复用‘的原则,将旁边的元素直接拿过来使用,从而看起来就像是栈弹出元素一样。而js中对象属于地址索引,因此key绑定对象的属性,当删除数组中某个对象时,能抓住是哪个对象被删除掉了,从而删除指定的节点。
以上是我个人的理解,如果理解错了,还是希望大神指正,万分感谢!