【微信小程序】页面加载后获取数据如何更新页面数据渲染
2019-11-06 本文已影响0人
代码界小菜鸡
有一次在写微信小程序的时候,当时用的是列表渲染数据。js获取到数据后,setData无法自动更新数据。搞得我也是焦头烂额的。
后来看了看setdata的官方文档。
setData 是小程序开发中使用最频繁的接口,也是最容易引发性能问题的接口。
工作原理
小程序的视图层目前使用 WebView 作为渲染载体,而逻辑层是由独立的 JavascriptCore 作为运行环境。在架构上,WebView 和 JavascriptCore 都是独立的模块,并不具备数据直接共享的通道。当前,视图层和逻辑层的数据传输,实际上通过两边提供的 evaluateJavascript 所实现。即用户传输的数据,需要将其转换为字符串形式传递,同时把转换后的数据内容拼接成一份 JS 脚本,再通过执行 JS 脚本的形式传递到两边独立环境。
而 evaluateJavascript 的执行会受很多方面的影响,数据到达视图层并不是实时的。
当时的代码是这样的
aaa:function(){
wx.request({
url:url,
method:"POST",
data:{
.....
},
success:function(res){
this.setData({
.....
})
}
})
}
这样不行
然后我就这样试了一下
aaa:function(){
var that = this
wx.request({
url:url,
method:"POST",
data:{
.....
},
success:function(res){
that.setData({
.....
})
}
})
}
居然成功了。
然后我再网上查了一下。说是需要备份一下this,也就是向代码中的
var that = this
具体问题我也不太太明白,等我明白了在此更新