问题描述:
webviewScriptError(渲染层错误)
Expected first rendering data but get updated data (it has been ignored);
原因:
在渲染界面过程中,引用了未赋值的变量导致的,常常发生在加载网络数据参与渲染界面的场景。
解决办法:
确认该变量是否已经赋值,延迟使用。
示例:引用外部wxs文件渲染界面
util.wxs
var filter = {
// 判断数组array中是否存在值value
valueInArray: function (array, value) {
return array.indexOf(value);
}
}
module.exports = {
valueInArray: filter.valueInArray,
}
在wxml文件中引用该外部wxs文件中的函数(这是小程序想实现类似于web在html中引用JavaScript代码的方式),然而该函数的array参数是通过网络请求获取的,赋值晚于渲染界面调用,这便会导致该渲染层错误。
test.wxml
<wxs module="util" src="../../utils/util.wxs"></wxs>
<image src="../../images/icon_zan_{{util.valueInArray(array, value) ? 'normal.png' : 'selected.png'}}"></image>
解决办法可以先渲染界面其他区域然后等取到该的值后再渲染对应区域,或者该区域先加载默认界面后再更改。
<image src="../../images/icon_zan_{{!array || util.valueInArray(array, value) ? 'normal.png' : 'selected.png'}}"></image>
如上,先确定array值是否已经赋值,如果没有则或条件的右表达式不会执行便可避免该错误,并先展示默认图片,等取到值后再引用即可,也可以让该控件在array赋值后再渲染。