Vue.set()和this.$set()介绍

Posted dingwen_blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue.set()和this.$set()介绍相关的知识,希望对你有一定的参考价值。

1.场景

当生成Vue实例之后,再次给数据赋值或者新增数据对象属性时,数据可以正常改变,但是视图不会更新。

data () {
  return {
    student: {
      name: '',
      sex: ''
    }
  }
}
mounted () { // ——钩子函数,实例挂载之后
  this.student.age = 24
}


// 数据能够正常更新 但是不会触发视图更新

2.使用

2.1 this.$set()

向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。

mounted () {
  this.$set(this.student,"age", 24)
}

// 视图能够正常完成更新

2.2 Vue.set()

Vue 不允许动态添加根级响应式属性。

const app = new Vue({
  data: {
    a: 1
  }
  // render: h => h(Suduko)
}).$mount('#app1')

Vue.set(app.data, 'b', 2)

// 报错 
//  使用Vue.set()方法向嵌套对象添加响应式属性

var vm=new Vue({
    el:'#test',
    data:{
        //data中已经存在info根属性
        info:{
            name:'小明';
        }
    }
});
//给info添加一个性别属性
Vue.set(vm.info,'sex','男');


// 视图能够正常完成更新

以上是关于Vue.set()和this.$set()介绍的主要内容,如果未能解决你的问题,请参考以下文章

vue 中的Vue.set 和 this.$set 的区别

从vue源码看Vue.set()和this.$set()

this.$set用法

this.$set,或者Vue.set(),@cell-click=“cellClick“

Vuejs 和 Vue.set(),更新数组

vue 中 this.$set的使用