zoukankan      html  css  js  c++  java
  • 小程序踩坑记之——花屏/重复渲染数据

    问题概览:

    小程序用 wx:for 渲染节点时,会出现花屏现象,而且很诡异的是,这仅在iPhone X设备中发现。

    截图详见我在小程序社区github中提的issue。

    兼容问题:wx:for渲染列表时在iPhone X出现重复数据 (小程序社区)

    wx:for会出现花屏或者重复渲染 (github)

    问题排查:

    原因1:当view组件包含多个子节点时,不能直接使用wx:for进行渲染,否则就会出现花屏或者重复渲染最后一条数据的问题。

    原因2:当父节点有  flex-warp: wrap  与子节点  filter: drop-shadow(0rpx 0rpx 10rpx #c50000)  属性并存时,也会导致花屏。

    解决方法:

    原因1:

    将 wx:for 所在节点改为 block 组件包裹子节点。

    如 :

        <view wx:for="{{albumList}}" wx:key="index" catchtap="jumpToGuide({{item}})" class="classic box" style="background-image: url('{{item.bg_img}}');">
              <view class="headTop">
                <view class="group">
                  <text class="typeTitle">{{item.name}}</text>
                  <text class="viceTitle">{{item.description}}</text>
                </view>
              </view>
              <view class="line"></view>
              <view class="footBottom">
                <view class="left">
                  <view class="group">
                    <text class="descript">当前关卡</text>
                    <text class="value">{{item.count==item.step?'已通关':item.step}}</text>
                  </view>
                </view>
                <view catchtap="jumpToRank({{item.id}})" class="right">
                  <view class="group">
                    <text class="descript">世界排行</text>
                    <text class="value">{{item.ranking?item.ranking:0}}</text>
                  </view>
                </view>
              </view>
            </view>

    修改后:

      <block wx:for="{{albumList}}" wx:key="index">
         <view catchtap="jumpToGuide({{item}})" class="classic box" style="background-image: url('{{item.bg_img}}');">
              <view class="headTop">
                <view class="group">
                  <text class="typeTitle">{{item.name}}</text>
                  <text class="viceTitle">{{item.description}}</text>
                </view>
              </view>
              <view class="line"></view>
              <view class="footBottom">
                <view class="left">
                  <view class="group">
                    <text class="descript">当前关卡</text>
                    <text class="value">{{item.count==item.step?'已通关':item.step}}</text>
                  </view>
                </view>
                <view catchtap="jumpToRank({{item.id}})" class="right">
                  <view class="group">
                    <text class="descript">世界排行</text>
                    <text class="value">{{item.ranking?item.ranking:0}}</text>
                  </view>
                </view>
              </view>
            </view>
      </block>

    修改即可解决问题。

    原因2:

    取消子节点的  filter: drop-shadow(0rpx 0rpx 10rpx #c50000)  属性,将阴影加到图片资源中。
    另,带阴影的图片资源大小会翻几倍,推荐用https://tinypng.com进行压缩,同一张图片可多次压缩。
    喜欢折腾的朋友可以根据它的api写个脚本。

    最后,嘻嘻!

  • 相关阅读:
    Educational Codeforces Round 10 C. Foe Pairs 水题
    Educational Codeforces Round 10 B. z-sort 构造
    CDOJ 1048 Bob's vector 三分
    Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
    第14届电子科大初赛民间盗版部分题目题解
    HDU 5654 xiaoxin and his watermelon candy 离线树状数组 区间不同数的个数
    HDU 5653 Bomber Man wants to bomb an Array. dp
    HDU 5652 India and China Origins 二分+并查集
    HDU 5651 xiaoxin juju needs help 数学
    HDU 5650 so easy 数学
  • 原文地址:https://www.cnblogs.com/Tylerrrkd/p/xcx_mass.html
Copyright © 2011-2022 走看看