微信小程序遇到修改数据后页面不渲染的问题解决
前言:
去年从小程序一开始出来到现在,我一直是比较看好和保持一定的关注度的,小程序的掀起的波浪我觉得一开始是在前端及其他技术开发人群中的,这是我第一次有意识的亲眼目睹了一个新技术的发展,还是感觉比较荣幸的。
唱衰小程序?我的观点是肯定不可能,因为现在每天提交审核的小程序还在继续增加,而且有些小程序确实很好用,比如摩拜的扫码骑车,还有我上周去KTV,直接用小程序扫屏幕上的二维码,就可以绑定房间,然后通过小程序点歌,切歌,发表情包等方便好玩的事情,所以,在我看来,有些应用场景是非常适合小程序的,以后生活中的更多场景会更多的应用小程序。
截止到目前,小程序的系列文章写了有十几篇,基本上是解决开发中的一些问题,踩过的坑。我的小程序也已经写的差不多了,但是公司的https加密认证还没有弄好,所以只能暂且搁置在那里了。
数据修改不生效
今天继续要介绍一个setData()的问题。
我们经常会这样写:
var that = this; wx.getStorage({ key: 'user', success: function(res){ console.log(res.data) that.data.params.uuid = res.data.uuid; that.data.params.ticket = res.data.ticket; that.data.params.courseUuid = options.courseUuid; that.data.params.isCompany = options.isCompany; that.fetchData(); that.getShareList(); } })
我们给data对象进行了一些赋值操作,但是发现接着使用这些数据的时候是不对的,我们赋值的数据并没有成功的渲染到页面。找了好久之后我发现,原来要想数据立马生效,必须要调用一下setData()方法才能有用,所以上面的代码修改如下:
var that = this; wx.getStorage({ key: 'user', success: function(res){ console.log(res.data) that.data.params.uuid = res.data.uuid; that.data.params.ticket = res.data.ticket; that.data.params.courseUuid = options.courseUuid; that.data.params.isCompany = options.isCompany; that.setData({ params: that.data.params }) that.fetchData(); that.getShareList(); } })