vue对象改时dom不更新

在vue中,改变某个对象的值时(如数组中的某一项或者对象的某个属性),vue并不会触发dom更新,这时就需要我们自己手动来操作。

方法一:强制刷新

// 此行为会重新渲染整个dom,除数据层次太多外,不建议使用
this.$forceUpdate();

 方法二:对于已经创建的实例,Vue 不允许动态添加根级别的响应式属性。但是,可以使用 Vue.set(object, propertyName, value) 方法向嵌套对象添加响应式属性。如:

data() {
    // 数组
    array: [1, 2, 3, 4];
    // 对象
    obj: {name: "test"},
}
......

// 这种方式赋值并不会触发dom并自动更新
// this.array[0] = 5;

// 改为此种方式赋值则会触发更新,
// 参数1:要修改的数组,    参数2:要修改的数组的索引,    参数3:修改后的值
this.$set(this.array, 0, 5);




// this.obj.name = "张三";

// 参数1:要修改的对象,    参数2:要修改的对象的属性名,    参数3:修改后的值
this.$set(this.obj, "name", "张三");

 

你可能感兴趣的:(vue对象改时dom不更新)