VUE 循环, item 数据位置改变出现的渲染错误

2019-01-04 10:37:33 +08:00
 lweein

循环的内容 dom 包含一个 img,其绑定事件 error,当 item 的判断 img 的 error 为 ture(图片成功显示)时,显示 img 图片,当 error 为 false(图片显示失败)时,显示提示文字。

问题:当 item 进行排序时,item 的 img 显示状态不进行切换

例:itemA 为 img 显示成功,itemB 为 img 显示失败,当拖拽排序两个 item,将它们位置对调后,itemA 的 img 显示失败,itemB 的 img 显示成功

探究:当拖拽操作实际改变了渲染 item 的数据再数组中位置的改变,但 vue 的已渲染出来 item 中 img 没有重新渲染导致 error 事件没有重新触发?亦或已经重新渲染但 error 没有二次触发?

1906 次点击
所在节点    问与答
8 条回复
lweein
2019-01-04 10:46:18 +08:00
求各位大神解答
horizon
2019-01-04 13:33:11 +08:00
发 codepen 吧。。
loy6491
2019-01-04 14:04:11 +08:00
:key 是怎么写的
Exia
2019-01-04 14:05:07 +08:00
vue 数组改变,要不全部改变,单独改要 this.$set(this.arr[0], 'xxx', data.xxx);
我的理解不知道是否有误?
shintendo
2019-01-04 14:34:08 +08:00
@Exia
应该不是这个问题,是 v-for 的 key 设置不当的问题
Exia
2019-01-04 14:49:42 +08:00
@shintendo 噢,谢谢指正 :)
x66
2019-01-04 14:54:03 +08:00
Jiki
2019-05-19 00:23:13 +08:00
key 如果设置为 index 的话,会导致这个问题,可以将 key 改为与内容相关的唯一标识。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/523755

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX