在Vue中为什么有$set这个api?

Vue的双向绑定通过Object.defineProperty实现,当新增对象属性时,若未在data中声明,视图不会更新。为解决这个问题,Vue提供了$set方法,确保新增属性能触发视图更新。数组操作同样存在类似问题,Vue重写了相关方法。$set在编码中用于在不改变对象引用的情况下添加属性并更新视图。
摘要由CSDN通过智能技术生成

在Vue中,如果想实现数据的双向绑定有几种方式: 最常见的就是把数据放在data中,然后template去绑定这个数据,这样就实现了双向绑定。

 

有的时候我们会发现,明明在template中绑定了这个属性 console.log 出来也是有的,但页面上就是显示不出来。

 

例如: 点我运行下面代码

<template>
  <div class="hello">
    <h1>{
  { msg }}</h1>
    <pre> {
  { obj.c }} </pre>
    <br>
    <button @click="addOne">点我+1</button>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  props: { msg: String },
  data() {
    return {
      obj: {
        a: 1,
        b: 2
      }
    };
  },
  watch: {
    obj: {
      handler: function(newV) {
        console.log("我发生变化了", newV);
      }
    }
  },
  methods: {
    addOne() {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值