vue中 数组通过循环添加新属性页面不更新

vue中 数组通过循环添加新属性页面不更新,第1张

  vue中在一个数组中,通过循环添加一个新属性,添加后数据变了,属性没有改变。这是为什么呢?

这里唯一的例外是使用Object.freeze(),这会阻止修改现有的属性,也意味着响应系统无法再追踪变化。以下是一些具体的分析:

  Vue不允许在已经创建的实例上动态添加新的根级响应式属性。然而它可以使用 Vue.set(obj,key,value) 方法将响应式属性添加到嵌套对象上:

  还可以使用vm.$set实例方法,这也是全局Vue.set方法的别名。

  有时你想向一个已有对象添加多个属性,例如使用 Object.assign() 或 _.extend() 方法来添加属性。但是,这样添加到对象上的新属性不会触发更新。在这种情况下可以创建一个新的对象,让它包含原对象的属性和新的属性:

1. 有时候我们会碰到这种情况:比如我们渲染一个table,从后端返回的数组里面并没有我们想要的字段,如果让后台帮忙加上的话,会增加冗余字段,这样会增加后端的维护成本,并不可取。

2. 我们可以通过 this.$set 来增加一个字段比如:

                    const lists = res.data // 后端返回数组

                    this.tableData = lists.map(i =>{

                        this.$set(i, edit , false)

                        return i

                    })

3. 更详细的可以去查看官方文档, ps:Vue官网转了好久打不开。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11919968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存