You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

V-for循环中图片加载过慢或无法加载的问题求助

嘿,我来帮你捋捋这个问题~

首先看你代码里的一个小细节:你所有图片的src都是用colCount(也就是15)作为picsum的图片ID,这意味着你渲染的30张图其实都是完全相同的那张ID为15的图片。虽然浏览器会缓存重复请求,但这大概率不是你想要的多图展示效果,先把这个点修正了再说。

接下来是你遇到的核心问题:图片元素已经在DOM里,但浏览器没发起请求,直到交互才加载。这主要是浏览器的资源加载策略导致的——对于不在视口内的资源,浏览器会延迟加载来节省带宽、提升首屏速度;尤其是一次性请求大量资源时(你这里要加载30张图),浏览器会排队处理请求,看起来就像“没加载”。

给你几个具体的解决方案:

1. 先保证图片的唯一性

用row和col的组合生成唯一的图片ID(picsum的ID范围是1-1000,注意不要超出这个区间),确保每张图都是不同的:

<img :src="`https://picsum.photos/id/${row * colCount + col}/200/300`" />

2. 强制浏览器立即加载所有图片

给img标签添加loading="eager"属性,告诉浏览器不管图片是否在视口内,都要立即发起请求:

<img 
  :src="`https://picsum.photos/id/${row * colCount + col}/200/300`" 
  loading="eager"
  alt="Random image"
/>

3. 长列表场景更推荐原生懒加载

如果你的表格行数/列数更多,首屏不需要展示所有图片,反而可以用loading="lazy"属性,让浏览器在图片滚动到视口附近时再加载,能显著提升首屏加载速度:

<img 
  :src="`https://picsum.photos/id/${row * colCount + col}/200/300`" 
  loading="lazy"
  alt="Random image"
/>

4. 优化图片加载的体验细节

  • 给图片添加alt属性,符合语义化规范,也能在加载失败时显示提示文本;
  • 给图片设置固定尺寸样式,避免加载时页面布局跳动:
img {
  width: 100%;
  height: 300px; /* 和请求的图片高度一致 */
  object-fit: cover;
}

最后给你一个完整的修改后的代码示例:

<template>
  <table>
    <tr v-for="row in rowCount" :key="row">
      <td v-for="col in colCount" :key="col">
        <img 
          :src="`https://picsum.photos/id/${row * colCount + col}/200/300`" 
          loading="eager"
          alt="Random gallery image"
        />
      </td>
    </tr>
  </table>
</template>

<script>
export default {
  data(){
    return{
      rowCount:2,
      colCount:15
    }
  }
};
</script>

<style scoped>
table {
  border-collapse: collapse;
  width: 100%;
}
td {
  padding: 8px;
  width: calc(100% / 15); /* 平均分配列宽 */
}
img {
  width: 100%;
  height: 300px;
  object-fit: cover;
  border-radius: 4px; /* 可选:给图片加圆角优化视觉 */
}
</style>

另外,关于picsum图片加载慢的问题,因为是免费公共服务,速度可能受地域和并发量影响,如果是生产环境,建议使用自己的CDN或者图片托管服务哦~

内容的提问来源于stack exchange,提问作者oguzcan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 18:30:59