Vue中给data中的对象属性添加一个新的属性时,视图没有刷新

264 阅读1分钟
    <div>
        <ul>
          <li v-for="(item,inx) in obj" :key="inx">{{item}}</li>
        </ul>
        <div @click="addBtn">添加属性</div>
  </div>
 
  data() {
    return {
      obj:{
        name:'小兰'
      }
    };
  }, 

    methods: {
       addBtn(){
        this.obj.age=18
        console.log(this.obj)
      },

obj.age 已经成功添加,但是视图并未刷新:

image.png

image.png 原因在于在Vue实例创建时, obj.age 并未声明,因此就没有被Vue转换为响应式的属性,通过使用$set()方法来转换响应式的属性

   addBtn(){
        this.$set(this.obj,'age',18)
         console.log(this.obj)
   }