vue中数据改变,强制视图更新,视图不更新的原因和解决办法
办法1,用 Object.assign对象改变:oldObj = Object.assign({},newObj);原理:对象是引用类型,直接改变oldObj的某属性指向地址没变,vue不一定能监控到,所以当我们新建一个对象并赋值给oldObj字段的话,直接改变了它的指向地址办法2,用vue.set对象和数组都能用的this.$set(this,'oldObj',newObj);th...
·
办法1,用 Object.assign
对象改变:oldObj = Object.assign({},newObj);
原理:对象是引用类型,直接改变oldObj的某属性指向地址没变,vue不一定能监控到,所以当我们新建一个对象并赋值给oldObj字段的话,直接改变了它的指向地址
办法2,用vue.set
对象和数组都能用的
this.$set(this,'oldObj',newObj);
this.$set(this,'oldArray',newArray);
例如要改变data中 some: { name: { a: 1, b: 3 } }
里面b的值,可以这样
this.$set(this.some.name,‘b’,2)
Vue不允许在已经创建的实例上动态添加新的根级响应式属性,然而它可以使用vue.set方法将相应属性添加到嵌套的对象上。
办法3,使用update
this.$forceUpdate()
,强制视图更新
更多推荐
已为社区贡献3条内容
所有评论(0)