微信小程序image加载成功前显示默认占位图

本文介绍如何在微信小程序中,当Image组件加载图片时,通过自定义组件显示默认占位图以提升用户体验。文章详细阐述了实现原理,包括利用onLoad和onError事件,以及具体的实现步骤,包括新建小程序项目、创建自定义组件image-loader,并提供了相关代码示例。测试部分展示了如何在页面中应用该组件。
摘要由CSDN通过智能技术生成

在微信小程序中,我们使用Image组件来展示图片,图片源可以是本地资源,也可以是服务器资源。但是为了内容的动态展示,我们绝大多数情况下,会使用服务器资源来展现作为image的图片源。既然是服务器资源,那么就需要依赖于网络的快慢,如果在网络慢的情况下,image加载图片的过程可能会非常慢,所以在加载图片的过程中,如果不做处理,会出现一片空白的情况,直到图片加载完成,这是非常差的用户体验。

为了提高用户体验度,我们可以在图片加载完成之前,预先展示一张本地的默认占位图片,而不是显示空白。

小程序的image组件没有提供默认图片的属性,需要我们自己实现这个功能。

实现原理

微信小程序的image组件有两个属性:

属性名 类型 说明
binderror HandleEvent 当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong'}
bindload HandleEvent 当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:'图片高度px', width:'图片宽度px'}

我们可以实现这两个事件:

  • 实现bindload,在图片未加载完成时,显示占位图,一旦加载完成,马上隐藏占位图,显示真正的业务图片
  • 实现binderror,在图片加载错误时,显示占位图。

具体实现

新建一个小程序项目

打开微信开发者工具,新建一个小程序项目Demo,删除无用代码

自定义组件

在实际开发中,在多个地方都会用到image组件,如果在每个使用的地方都去实现一遍占位图的功能,不仅会增加代码量,而且也增加维护量,所以,我们可以把这些逻辑,封装为一个自定义组件,这里我们取名为image-loader,然后任何用到的地方,直接用image-loader去代替

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值