vue this.$set不起作用,vue.set()用法

  vue this.$set不起作用,vue.set()用法

  本文主要介绍这个的用法。$set in vue,有一定参考价值。感兴趣的朋友可以参考一下,希望能帮到你。

  

目录

  为什么用这个。VUE的$set有反应吗?分析和总结

  

vue中 this.$set的使用

  背景:我在写前端项目的时候,后端给了我们一个json对象,我已经渲染到页面上了。但是,由于我自己的需要,我想在返回的对象中添加一个字段,所以我推入了一个字段。添加了附加内容,但页面呈现没有改变。然后我意识到它没有反应。如果我们想让这个新领域有反应,我们需要使用它。$set注入数据。

  当一个已经赋值的对象或数组在vue的数据中声明时(数组中的值是一个对象),一个新的属性被添加到对象中。如果此属性的值被更新,视图将不会被更新。

  

使用

  这个。$set(目标,键,值)

  Target:表示数据源,即要操作的数组或对象。

  关键点:要操作的区域。

  值:已更改的数据

  来个小案例:

  向对象添加年龄属性,并使其响应变化。

  模板

  div class=" text "

  p{{list}}/p

  button @click=addage /button

  /div

  /模板

  脚本

  导出默认值{

  data(){

  返回{

  列表:{姓名:张三 }

  }

  },

  方法:{

  add(){

  如果(!This.list.age){ //如果没有年龄属性,则为其添加一个年龄属性

  this.list.age=18

  }否则{

  this.list.age

  }

  console.log(this.list)

  }

  }

  }

  /脚本

  当我们不用这个的时候。$set添加对象属性,效果是:

  数据确实已经添加,但是页面没有响应呈现年龄属性。

  当我们用这个的时候。$ set (this.list, age ,18)添加属性。效果:

  我们可以看到添加的数据是有响应的。

  

为什么能够响应式?

  仔细看看,这个。$set与更多的get age和set age方法一起使用,这也是它能够响应的原因。

  

分析

  Vue的响应原理是JavaScript对象作为数据选项传入Vue实例,Vue会遍历这个对象的所有属性,用Object.defineProperty把这些属性全部转换成getter/setter。这些getter/setter对用户来说是不可见,但是在内部,它们使Vue能够跟踪依赖关系,并在属性被访问和修改时通知变化。这里应该注意的是,在控制台上打印数据对象时,不同的浏览器对getter/setter的格式是不同的。下图来自官方文件。

  

总结

  本文到此为止。希望能帮到你,也希望你能多关注我们的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: