解决vue中map类型数据改变,无法触发视图更新

您所在的位置:网站首页 vue数据更新了视图没更新 解决vue中map类型数据改变,无法触发视图更新

解决vue中map类型数据改变,无法触发视图更新

2024-06-12 17:10| 来源: 网络整理| 查看: 265

解决vue中map类型数据改变,无法触发视图更新

问题:我们在写 vue 的时候,data 数据可能会用到 map 类型的对象(带有迭代器的对象,谁不爱呢),比如说用 v-for 渲染到视图;用 map 对象会导致一个问题,即修改 map 对象里面的数据时,不会触发视图的更新,尤其是像下面这种使用: {{ item[0] }} {{ item[1].xxx }} export default{ data(){ return { demo: new Map([ [ 'name', new Map([['key1', {...}], ['key2', {...}], ...]) ], ... ]) } }, }

此时使用 $set 或者直接修改最里层的对象的属性都是不会自动渲染到视图的

this.$set(this.demo.get('name').get('key1'), 'xxx', someValue);//无效 this.demo.get('name').get('key1').xxx = someValue;//无效 解决:正确的姿势应该是 ...//相关修改操作 this.$forceUpdate()//强制重新渲染视图就行了

有意思的是,假如你的修改数据的调用函数里面有修改其它数据,比如:

this.someArray.push(something);

视图同样会进行更新



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3