Vue.set方法

如果在实例创建之后添加新的属性到实例上,它不会触发视图更新

因此比如我们修改一个数组其中的一个值,或者添加一条数据时,数据变化了,但是视图没有渲染。

例如:

  <div v-for="item in items" :key="item">{{item}}</div>
  <button @click="add">添加</button> 
事件:
 add() {
      this.items[1] = 2;
      console.log(this.items);
    },
结果:
视图与vue检测工具上的数据都没有变,但是控制台能打印出修改后的数据

解决办法:

Vue提供了两种方法去解决

1、Vue.set( )

2、this.$set( )

两者区别在于,组件中可以直接使用this.$set( ),如果使用Vue.set( ),就要引入Vue

参数1: 要修改的对象 (数组|对象)
参数2: 属性    (数组的属性是下标|对象的属性是key(属性名))
参数3: 修改的值  (属性的值是啥)
返回值:已经修改好的值

 add() {
    this.$set(this.items, 1, 2)
      console.log(this.items);
    },    
修改后的结果
 

 


__EOF__

本文作者长安
本文链接https://www.cnblogs.com/jingxin01/p/16417474.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   长安·念  阅读(664)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示