vue深入响应式原理 - 对象- 数组

  1. 项目结构
    在这里插入图片描述
    2.fater.vue
<template>
  <div>
    <h1>{{man}}</h1>
    <button @click="changeObj">添加对象属性</button>
    <button @click="changeObjAddr">改变对象的地址</button>
    <hr />
    <h1>{{arr}}</h1>
    <button @click="changeArr">改变数组</button>
    <hr />
    <h3>
      <son :name="man" :arr="arr"></son>
    </h3>
  </div>
</template>

<script>
import son from "./son";
export default {
  components: {
    son
  },
  data() {
    return {
      man: {
        name: "张"
      },
      arr: [1, 2, 3, 4, 5, 6]
    };
  },
  methods: {
    changeObj() {
      // 1.vue对象的响应式
      //1.1为对象添加某个属性
      // Vue.set(object, propertyName, value) /*官网方法*/
      // console.log('this.man.age:', this.man.age === undefined)
      // if(this.man.age === undefined){
      //     let age = 0
      //      this.$set(this.man,'age',age)
      // }else{
      //     this.man.age+=1
      // }
      //   或者
      let age = this.man.age === undefined ? 0 : (this.man.age += 1);
      this.$set(this.man, "age", age);

      //1.2为对象添加多个属性
      // // 代替 `Object.assign(this.someObject, { a: 1, b: 2 })`
      // this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 }) /*官网方法*/
      this.man = Object.assign({}, this.man, { age: 3, addr: "重庆" });
    },

    changeObjAddr() {
      this.man.addr = "北京";
    },

    changeArr() {
      // 2.vue数组的响应式
      //2.1改变数组的某一项
      // vm.$set(vm.items, indexOfItem, newValue) /*官网方法*/
      this.$set(this.arr, this.arr.length - 1, 9);

      //2.2改变数组的长度
      // vm.items.splice(newLength) /*官网方法*/
    //   this.arr.splice(5);
    }
  }
};
</script>

3.son.vue

<template>
    <div>
       {{name}}  
       <br>
       {{arr}}  
    </div>
</template>

<script>
export default {
  props:['name','arr']
}   
</script>

4.结果
在这里插入图片描述
vue官网 添加链接描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值