vue渲染列表时,数据改变但视图不变?
需求:切换仓库,清空仓位
说明:仓位字段是表格table数据loadData里的一个字段,uuid是表格行数据的key
//仓库值改变,清空仓位的值
handleStockChange(value){
//loadData是表格的数据
var arr=this.loadData
for(var i=0;i<arr.length;i++){
//清空仓位
arr[i].position = ""
arr[i].uuid = arr[i].uuid +'_'+ i//uuid不变视图就没改变
this.$set(this.loadData,i,arr[i])
}
},
这里遇到一个问题,切换仓库后,仓位没有变化。视图并未改变,只有将uuid清空改变后视图才改变,有没有更好的办法,因为uuid还涉及到修改
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不建议在for循环里使用this.$set,this.$set是通知vue去更新视图的一种方式,循环调用太频繁了,
参考vue文档去做数据更新试试吧
for(let n of this.loadData){
}
for循环的key不变本身就不会触发重新渲染。
建议你sku的组合的话,有修改就重新render一个数组对后续的维护也比较好一些。
在改变数据那里再去手动改变所对应组件的key值,使视图强制刷新