由于浏览器对图片有缓存的机制,所以对于一次性型的gif图,只会加载动效一次,后面再次使用时就不会出现我们想要的效果,因此我们需要解决这种缓存问题,可以使用添加时间戳的问题让浏览器认为这不是同一张gif图,从而再次加载图片,实现每次都有动效。
代码:
<img v-show="show" :src="onceImg" />
<script>
export default {
name: 'home',
data() {
return {
show: true,
state: 'fail', // 状态的变化
}
},
watch: {
state: {
immediate: true,
handler(val) {
if(val === 'fail') {
this.onceImg = `open.gif?+${new Date().getTime()}`;
this.show = true;
setTimeout(() => {
this.show = false;
}, 1030)
}
}
}
}
}
</script>
提示: 由于每次都加载新的图片,在一些场景下肯定会产生一小段的空白,就是类似于闪的过程,因此看自己的需求,在要加载这个图片之前的一个状态提前加载这个图片