美文网首页
Vue.set() this.$set()引发的视图更新思考及注

Vue.set() this.$set()引发的视图更新思考及注

作者: WangYatao | 来源:发表于2019-04-15 19:15 被阅读0次

引文

vue文档列表渲染中有条注意事项:

image.png

这里提到的两种情况实际改变了数据但是没有触发视图更新。

由此引出Vue.set(),先上文档API:

image.png

this.$set()Vue.set()本质方法一样,前者可以用在methods中使用。

set方法调用时,可以触发页面全部重新渲染。

比如在vue中有个data数组arr:

//arr=[1,2,3]
 arr[1]='b'
 console.log(arr) // [1,2,3]
 Vue.set(arr,2,'c')
 console.log(arr) // [1,b,c]

可以看出set触发了整个页面的重新渲染,连arr[1]='b'的效果也被重新渲染了。

使用set添加数据

Vue.set()不光能修改数据,还能添加数据,弥补了Vue数组变异方法的不足。

可以使用set添加数据这一特性,解决一些常见问题。

例如循环出的元素点击应用选中样式,再点击取消选中样式。

<section v-for="item in list">
  <div :class="['xxclass',item.checked?'checked':'']"></div>
</section>
<!--这里通过判断item的**本身不存在的checked属性**来决定是否增加checked样式类-->


点击方法如下:

clickHandle: function(item){
  if(typeof item.checked === 'undefined'){
   this.$set(item, 'checked', true)
  } else {
   item.checked = !item.checked
  }
}
// 如果item没有checked属性就用set方法添加,有则取反

这就利用set使用了对象中本身不存在的checked属性来实现想要的功能。

相关文章

  • vue强制更新

    使用update this.$forceUpdate(),强制视图更新 用vue.set this.$set(th...

  • Vue.set() this.$set()引发的视图更新思考及注

    引文 vue文档列表渲染中有条注意事项: 这里提到的两种情况实际改变了数据但是没有触发视图更新。 由此引出Vue....

  • 使用vue.set() (this.$set)更新视图

    更新某些List数据时 视图(页面)不会实时更新 ,需要使用 this.$set更新 第一种:this.$set(...

  • Vue.set和Vue数据监测

    Vue.set this.$set(this.student,'添加的属性','添加的属性值') Vue数据监测 ...

  • vue.set/this.$set

    vue项目中,几个表格分开展示,但是展示的内容都一样(不展示的内容有区别),为了省事儿,就给封装了个子组件,但是在...

  • Vue中遇到的更新状态页面不刷新问题

    一、更改state视图不更新 1、尝试使用 this.$set(this, 'key', myNewData) 进...

  • Vue.set()触发视图更新

    向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因...

  • vue中的set

    Vue.set()在methods中也可以写成this.$set() 这个组件最后显示的界面如下: 当点击按钮之后...

  • 深入理解Vue的数据响应式

    【目录】一、Vue对data做了什么?二、数据响应式三、Vue.set和this.$set 【正文】在学习Vue的...

  • Vue.set()和this.$set()

    在我们使用vue进行开发的过程中,可能会遇到一种情况:当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新...

网友评论

      本文标题:Vue.set() this.$set()引发的视图更新思考及注

      本文链接:https://www.haomeiwen.com/subject/esppwqtx.html