vue对象数组使用splice无法删除指定元素

我在主页使用了组件,然后使用v-for循环渲染出组件。删除某个组件时,使用splice(index,1)的方式删除该元素。对应的数组元素发生了改变,但是图形渲染却出了问题:无论我删除哪个元素,界面上只会默认删除最后一个元素。
所以我想问问这是什么原因导致的呢?有什么好的解决办法?

组件渲染:
clipboard.png

数组结构:

clipboard.png

数据删除操作:

clipboard.png

阅读 12.6k
2 个回答

我在别人的问题上找到了解决方法了,出现这种情况的主要原因在于key的绑定问题,v-for只负责循环组件,而组件的唯一标识却是用key来确定的。而我这里只是单纯的使用字符串来指定每一个组件的key,而没有与数组中元素挂钩,因此当删除数组元素时,vue会采用一种叫做’就地复用‘的原则,将旁边的元素直接拿过来使用,从而看起来就像是栈弹出元素一样。而js中对象属于地址索引,因此key绑定对象的属性,当删除数组中某个对象时,能抓住是哪个对象被删除掉了,从而删除指定的节点。
以上是我个人的理解,如果理解错了,还是希望大神指正,万分感谢!

你得看看你的this.current_index的值是多少。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题