平常在项目中,我们会经常需要有加载网络图片的功能,但是存在图片地址问题、网络问题等导致图片加载失败,需要展示一个占位图,所以我这里总结了三种办法,仅供大家参考,写的不好大家见谅。
一、导入第三方插件,本人没有使用过,所以不知道质量如何,大家有兴趣可以去详细研究下(传送门)
二、监听image标签的@error事件进行占位图的显示,这里我直接贴代码,大家看看逻辑即可明白。
注意:这里有点不好的就是一开始显示的都是空白的,只有图片加载成功或者失败后才会显示正常图片还是占位图
data里面的一些初始化数据
data() {
return {
placeholderImage:'/static/logo.png',//占位图
dataList: [
{"icon":"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=335766965,268232045&fm=26&gp=0.jpg","title":"第一个","id":0},
{"icon":"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1255632579,1714788604&fm=26&gp=0.jpg","title":"第二个","id":1},
{"icon":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1597150330876&di=d0cc080391333c69725d2829a8ea6e76&imgtype=0&src=http%3A%2F%2Fimg.improve-yourmemory.com%2Fpic%2F2bb85a1310c35a39d33987a88c2725c5-2.jpg","title":"第三个","id":2},
{"icon":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1597150330876&di=2865923abaf09b0b86a37007810718c8&imgtype=0&src=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fupload%2Fupc%2Ftx%2Fwallpaper%2F1305%2F24%2Fc1%2F21266756_1369385228661.jpg","title":"第四个","id":3},
{"icon":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1597150330875&di=6066b7458f3352b58f9ee5c09fa5c4db&imgtype=0&src=http%3A%2F%2Fztd00.photos.bdimg.com%2Fztd%2Fw%3D700%3Bq%3D50%2Fsign%3De4fb138eefcd7b89e96c38833f1f339a%2F3bf33a87e950352af6a0364c5a43fbf2b3118bb4.jpg","title":"第五个","id":4},
{"icon":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1597150330874&di=22b9607cd676607019728a104953b8b9&imgtype=0&src=http%3A%2F%2Fn.sinaimg.cn%2Fsinacn10%2F656%2Fw580h876%2F20180722%2F1553-hfqtahi6951449.jpg","title":"第六个","id":5},
{"icon":"https://www.baidu.com/image_0.png","title":"第七个","id":6}//这里最后一张是错误的地址
]
}
}
样式代码:
三、使用两个image标签,一个image用来展示占位图、一个用来展示网络图。(这种在数据量比较大的情况下,不推荐使用,这里我只是提供下思路,如果大家有更好的可以分享下)
这种方法和第二种方法就是对换了一下思路,默认显示了全部占位图,等待监听图片加载成功,然后把image占位图标签进行隐藏。
代码如下:
data的数据和第二种方法的数据一样,不同于methods里面的事件
样式代码:
我这里总结的就这二个方法,如果各位大佬有更好的方法记得分享哈。如果写的不好,大家跳过就好😜😜
第二、三种方法的参考文章:uni-app图片未加载完处理