数据加载后页面渲染数据,该界面共加载三级菜单,控制台打印已全部加载,但是页面渲染加载一级菜单后就卡在这种界面不进行后续的渲染了,是性能的问题吗
这个是首页的页面渲染
<!-- 顶部tab选项 -->
<scroll-view scroll-x="true" scroll-with-animation scroll-left="{{sliderOffset}}" class="tab" id="tab">
<block wx:for="{{tabs}}" wx:key="item">
<view class="tab_item {{index == activeIndex ? 'tab_item_select' : ''}} {{index == (tabs.length - 1) ? '' : 'tab_item_border'}}" data-id="{{index}}" id="{{index}}" catchtap="tabClick">
{{item.name}}
</view>
</block>
</scroll-view>
<!-- 类别与内容 -->
<view class="content">
<scroll-view scroll-y class="content_slide" style="height: {{scrollViewHeight}}px">
<block wx:for="{{ls11}}" wx:for-item="item" wx:key="index">
<view class="content_slide_item {{index == select_index ? 'content_slide_item_select' : ''}}" bindtap="changepage" id="{{index}}" scroll-top="{{scollTop}}" data-index="{{index}}">
{{tools.sub(item.title2)}}{{"\n"}}{{tools2.sub(item.title2)}}
</view>
</block>
</scroll-view>
<scroll-view scroll-y class="content_body" style="height: {{scrollViewHeight}}px">
<block wx:for="{{ls11[select_index].foodsIndex3}}" wx:key="item">
<view wx:if="{{showHiden == true}}" class="content_body_item" id="food{{index}}" data-id="{{item.productid}}" catchtap="goodsInfo">
<view class="content_body_item_left"><image wx:if="{{ item.loaded }}" src="{{item.imagepath}}" mode="aspectFit"></image></view>
<view class="content_body_item_right">
<view class="content_body_item_right_tit">{{item.title}}</view>
<view class="content_body_item_right_des">{{item.categoryid1name}}{{item.categoryid2name == null ? '' : item.categoryid2name}}{{item.categoryid3name == null ? '' : item.categoryid3name}}</view>
<!-- <view class="content_body_item_right_num">已售1000</view> -->
<view class="content_body_item_right_price">
<view>¥{{item.retailprice}} </view>
<!-- <text style="color:#999999;font-size:30rpx;text-decoration:line-through;font-weight:100">¥29.00</text> -->
<image src="{{basisUrl}}Images/img/cart.svg" mode="aspectFit" catchtap="addCart" data-index="{{index}}"></image>
</view>
</view>
</view>
</block>
<view class="tip" style="height: {{scrollViewHeight}}px" wx:if="{{showHiden == false}}">
<image src="/img/16.png"></image>
<text>暂无数据</text>
</view>
</scroll-view>
</view>
检查一下代码逻辑,或者接口请求有时速度慢 导致 scrollViewHeight获取不到值
const systemInfo = wx.getSystemInfoSync()
// 然后取出navbar和header的高度
// 根据文档,先创建一个SelectorQuery对象实例
let query = wx.createSelectorQuery().in(this);
// 然后逐个取出navbar和header的节点信息
// 选择器的语法与jQuery语法相同
query.select('#tab').boundingClientRect();
// 执行上面所指定的请求,结果会按照顺序存放于一个数组中,在callback的第一个参数中返回
query.exec((res) => {
// 分别取出navbar和header的高度
let navbarHeight = res[0].height;
// 然后就是做个减法
let scrollViewHeight = systemInfo.windowHeight - navbarHeight;
// 算出来之后存到data对象里面
this.setData({
scrollViewHeight: scrollViewHeight
});
console.log(scrollViewHeight,res)
});
这个还是请求速度慢了,然后onload页面你的数据还没有完全拿到,已经执行到了onReady ,避免这些问题可以把请求也放到onReady之中,等到返回结果再执行获取高度操作
这个你本地调试一下吧,应该不是性能问题。