vue渲染列表时,数据改变但视图不变?

发布于 2022-09-13 00:17:32 字数 507 浏览 21 评论 0

需求:切换仓库,清空仓位
说明:仓位字段是表格table数据loadData里的一个字段,uuid是表格行数据的key
image.png

 //仓库值改变,清空仓位的值
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

陌路黄昏 2022-09-20 00:17:32

不建议在for循环里使用this.$set,this.$set是通知vue去更新视图的一种方式,循环调用太频繁了,

  for(var i=0;i<arr.length;i++){
        //清空仓位
        arr[i].position = ""
        arr[i].uuid = arr[i].uuid +'_'+ i
        this.$set(this.loadData,i,arr[i])
    }

参考vue文档去做数据更新试试吧
image.png

猛虎独行 2022-09-20 00:17:32

for(let n of this.loadData){

this.$set(n,'position','')

}

游魂 2022-09-20 00:17:32

for循环的key不变本身就不会触发重新渲染。
建议你sku的组合的话,有修改就重新render一个数组对后续的维护也比较好一些。

别把无礼当个性 2022-09-20 00:17:32

在改变数据那里再去手动改变所对应组件的key值,使视图强制刷新

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文