美文网首页
优化长列表的swiper

优化长列表的swiper

作者: huanghaodong | 来源:发表于2018-12-19 11:26 被阅读0次

比如,现在有一个长列表,点击列表,swiper显示,并且swiper-item显示点击对应的列表项信息。可以拖动切换swiper-item。如:


udian.gif

设长列表数据为goodsList,错误的做法

<swiper bindchange="indexChange" current="{{showIndex}}"
             interval="{{5000}}" duration="{{1000}}" indicator-dots="{{false}}" >
       <block wx:for="{{goodsList}}" wx:key=""
           >
         <swiper-item>
           <template is="showGoodsList" data="{{ ...item, index}}"/>
         </swiper-item>
       </block>
     </swiper>

直接遍历整个goodsList去生成swiper-item,节点太多会导致卡顿。

正确的做法

<swiper bindchange="indexChange" current="{{showIndex}}"
              interval="{{5000}}" duration="{{1000}}" indicator-dots="{{false}}" >
        <block wx:for="{{goodsList}}" wx:key="" wx:if="{{(index >= (choiceItem - 1)) && (index <= (choiceItem + 1))}}"
            >
          <swiper-item>
            <template is="showGoodsList" data="{{ ...item, index}}"/>
          </swiper-item>
        </block>
      </swiper>

根据当前选中的choiceItem,只显示前后两个加当前,三个swiper-item,做到了优化。
js部分

choiceGoods(e) {
    var index = e.currentTarget.dataset.index;
    this.setData({
      choiceItem: index,
      is_show_item: 1,
      showIndex: index == 0 ? 0 : index == this.data.goodsList.length ? 2 : 1,
    })
  }

相关文章

网友评论

      本文标题:优化长列表的swiper

      本文链接:https://www.haomeiwen.com/subject/fcgdkqtx.html