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

Next.js路由中Material UI组件图片无法渲染问题解决咨询

问题原因

你现在遇到的图片无法加载问题,是两处代码逻辑和数据结构不匹配导致的:

  • 你定义的albums数组中,每一项的photos是单个对象,不是数组。你写的判断条件undefined !== item['photos'] && item['photos'].length里,普通对象不存在length属性,因此判断结果永远为false,图片渲染的代码块完全不会执行。
  • 就算条件判断通过,你写的取值逻辑item['photos'][0]['thumbnailUrl']也是针对数组结构写的,photos作为对象不存在0下标,取值会直接报错。

解决方法

1. 修正条件判断和取值逻辑

将原代码中图片渲染部分的逻辑修改为和你的数据结构匹配:

// 把原来的判断部分替换成下面的代码
{item?.photos && (
  <ButtonBase sx={{ width: 128, height: 128 }}>
    <Img alt="complex" src={item.photos.thumbnailUrl} />
  </ButtonBase>
)}

如果后续你把photos调整为数组结构,再修改为对应逻辑即可:

// 仅当photos是数组时使用这段
{item?.photos?.length > 0 && (
  <ButtonBase sx={{ width: 128, height: 128 }}>
    <Img alt="complex" src={item.photos[0].thumbnailUrl} />
  </ButtonBase>
)}

2. 可选优化(Next.js 专属)

如果你使用的是Next.js 13及以上版本,可以替换原生img标签为Next.js内置的next/image组件,图片加载性能更好,使用时只需要在项目的next.config.js中配置你用到的远程图片域名即可。

修改完成后刷新页面即可正常加载图片。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:36:03