小程序开发之图片预加载

博客介绍了小程序图片预加载。指出小程序与web的html不同,很多属性未体现,如图片预加载。阐述了实现原理,即给初始化图片loading,监听加载完成后换为目标图片,用数组数据判断加载状态,全部加载好后重新渲染。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小程序图片预加载,小程序不像web的html,很多属性小程序没体现出来,比如图片预加载
我们现在来看看小程序中的图片预加载
这个是wxml

<view class="img-content">
    <navigator class="list flex-box" wx:for="{{films}}" url="">
        <view class="list-img">
          <image class="img" src="{{item.loaded?item.img:'/image/poading.gif'}}" bindload="imageOnLoad" id="{{item.href_id}}" binderror="imageOnLoadError"></image>
        
        </view>
        <view class="list-main flex-btn">
            <view class="list-title list-brief">
                <text>{{item.title}}</text>
            </view>
            <view class="list-brief">{{item.introduce}}</view>
            <view class="list-brief" style='margin-top:10rpx;'>作者:{{item.author}}<text style='float:right'>{{item.browsing_volume}}阅读</text></view>
        </view>
    </navigator>
</view>

我们现在来看看js是怎么处理的

imageOnLoad(ev) {
    var that = this;
    var films = that.data.films;
    var href_id = ev.currentTarget.id;
    for (var i = 0; i < films.length; i++) {
      if (films[i].href_id == href_id) {
        films[i].loaded = true
      }
    }
    that.setData({
      films: films
    })
  },
  imageOnLoadError(ev) {
    var that = this;
    var imgUrl = '/frontend/web/qsw/952421561722607.jpg';
    var films = that.data.films;
    var href_id = ev.currentTarget.id;
    for (var i = 0; i < films.length; i++) {
      if (films[i].href_id == href_id) {
        films[i].img = imgUrl
      }
    }
    that.setData({
      films: films
    })
  }

实现的原理:
1.我们给一张初始化的图片loading,然后去监听图片是否加载完成如果图片加载完成我们就把他换成已经加载的目标图片
2.我们这些数据都是数组。我们给他一个值去判断图片是否已经加载好了 films[i].loaded = true,等全部图片加载好就重新渲染一下,这样我们去可以去实现图片的预加载

看实例在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值