vue2 响应式原理的缺点及解决办法

vue2 响应式的缺点是:

  1. 无法监听到对象属性的动态添加和删除
  2. 无法监听到数组下标和length长度的变化

我们可以用以下方法解决:

this.$set   this.$delete

完整代码如下:

<template>
  <div>
    <p>姓名:{{ person.name }}</p>
    <p>性别:{{person.sex}}</p>
    <p>爱好:{{person.hobby}}</p>
    <button @click="add">添加性别</button>
    <button @click="del">删除名字</button>
    <button @click="update">更新数组</button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      person: {
        name: "张三",
        age: 18,
        hobby:['吃','喝','玩']
      },
    };
  },
  methods: {
    add() {
      // this.person.sex = "女"; //直接修改对象下面的属性是不会引起页面视图变化的
      this.$set(this.person,'sex','女') //当点击按钮的时候,视图会更新
    },
    del(){
      // delete this.person.name  //直接删除对象下面的某个属性是不会引起页面视图变化的
      this.$delete(this.person,'name')  //当点击按钮的时候,视图会更新
    },
    update(){
      // this.person.hobby[0] = '56' //此时视图是不更新的
      // 方法一:
      this.$set(this.person.hobby,1,'睡觉') // 表示修改这个数组中的索引是1的值,修改为 睡觉
      // 方法二:
      this.person.hobby.splice(1,1,'睡觉') //表示从索引为1的值开始,修改数组,修改的长度为 1 (即只修改这一项)
    } 
  },
};
</script>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值