首页 > 移动平台 > 详细

记一次wepy里面的渲染问题(this.$apply()的使用)

时间:2019-03-04 13:51:54      阅读:270      评论:0      收藏:0      [点我收藏+]

今天在用wepy搞小程序的时候遇到了一个小坑,卡了我好一会,因为之前在做React,所以对wepy的了解不是特别深入,所以导致了这个问题的发生

先贴上来关键代码让大家看一看(备注之处是问题解决的方法)

技术分享图片

技术分享图片

效果:

技术分享图片

我们可以看到刚进来时整个页面都没数据,但我点别的选项之后数据又会出来

why?当时我真的是满脸懵逼啊,数据也获取到了就是第一次不渲染,给我急得差点把自己的头发都薅干净了

经过我一番调试,发现他奶奶的checkStep里面的赋值附近有问题,当时我脑子一热把赋值改成了用setData()结果一点效果没有,用this.itemchecked赋值还是第一次不出来,

在我即将把头发薅干净之际,我的大腿过来帮我看了一眼,轻飘飘的来了句你缺了this.$apply(),我日,我赶紧试了试,还真是

技术分享图片

!!!!!一切正常

那为啥需要调用this.$apply()呢,

可以看到methods里面的方法被bindtap调用之后触发了页面渲染,而当我在onLoad()里面调用时却没有触发页面渲染

经过我一番搜索和查证得到以下结果:

使用wepy框架写小程序,data赋值这里不需要使用this.setData({}),例如:data:{x:‘‘1"},

比如data里面你定义了一个x=‘‘,然后你在自定义的方法里面用this.x=200 之后,需要用this.$apply()来进行数据绑定。这样你在view中绑定data中的x变量时,才会有200,不然就是空

(特别注意:)

不过有个前提,method里面的方法是不用这个的,但methods里面只能放bindtap这类方法,所以你自己定义的其他方法,或者写在onshow里面,就必须得用this.$apply()。

 

this.$apply()使用场景:

  1.异步更新数据

  2.手动刷新DOM

 

哈哈哈,有一个小坑被我踩过了,美滋滋!

记一次wepy里面的渲染问题(this.$apply()的使用)

原文:https://www.cnblogs.com/suihang/p/10470174.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!