• 【bug】uniapp的image组件渲染gif图,只有第一次点击的时候有动效,需要每次点击都有gif效果,已解决


    前两天遇到的问题,暂时没有解决,就搁置了。
    不解决又难受,还好今天解决了,记录下

    需求:
    两个gif图,分别代表点击之后的男生和女生,并且有两个静态的男生和女生图片

    当男生静态图被点击的时候切换男生的gif图,女生静态图被点击的时候切换女生的gif图

    主要就是根据动态变量控制静态图和gif的图切换,但是来回多点击几次后发现,只有第一次从静态图切换到gif图的时候,才有gif的动态效果

    然后才知道,原来在uni-app中使用image组件展示gif图片的时候,通常会遇到只有第一次点击时有动态效果,第二次点击不展示的问题。这是因为image组件默认会对同一个src地址的图片进行缓存,导致第二次点击时直接从缓存中读取,而不会重新加载图片。

    解决思路就是:每次点击的图片链接地址加上一个随机参数,强制让image组件去重新加载图片
    我这里是vue3的写法,只是写法不同,实现效果一样的

    
    			<view class="chose-sex-image">
    				<view @click="choseSex('boy')" >			
    					<image v-if="data.isStaticBoy" src="静态boy图片路径.png" 
    						style="width: 161rpx; height: 184rpx"></image>
    					<image v-else :src="data.boygif" style="width: 200rpx; height: 200rpx">
    					</image>
    				</view>
    
    				<view @click.stop="choseSex('girl')" >				
    					<image v-if="data.isStaticGirl" src="静态girl图片路径.png"
    						style="width: 161rpx; height: 184rpx"></image>
    					<image v-else :src="data.girlgif" style="width: 200rpx; height: 200rpx">
    					</image>
    				</view>
    			</view>
    		</view>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    	const data = ref({
    		isStaticGirl: true,
    		isStaticBoy: true,		
    		boygif: '动态boy路径.gif',
    		girlgif: '动态girl路径.gif'
    	});
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    	function choseSex(key) {
    		if (key === "boy") {
    			data.value.isStaticBoy = false;
    			data.value.isStaticGirl = true;		
    			data.value.boygif = '/static/images/动态boy路径.gif?' + new Date().getTime();
    		} else {
    			data.value.isStaticGirl = false;
    			data.value.isStaticBoy = true;		
    			data.value.girlgif = '/static/images/动态girl路径.gif?' + new Date().getTime();
    		}
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这样,每次点击图片时都会重新加载图片,从而实现每次点击都有动态效果的效果。

    亲测有效~~~

  • 相关阅读:
    排序(冒泡、选择、插入、希尔、归并、快速)
    2023高教社杯数学建模B题思路代码 - 多波束测线问题
    校验验证码是否过期(定时刷新验证码)
    一篇面向初学者的git使用教程(超级详细)
    P31 JList列表框
    前端架构师之10_JavaScript_DOM
    Mac Pycharm和Anaconda配置pytorch环境
    PHP下富文本HTML过滤器:HTMLPurifier使用教程
    华为机试 - 按索引范围翻转文章片段
    IDEA下载与安装,保姆级教程
  • 原文地址:https://blog.csdn.net/weixin_49668076/article/details/134533428