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

React Suspense在Next.js中失效,shadcn/ui骨架 fallback 不显示

Next.js Suspense + shadcn/ui 骨架不显示的解决方案

1. 开启Next.js Image组件的Suspense支持

Next.js的Image组件默认不会触发Suspense,必须显式开启suspense={true}和loading="lazy"属性,示例代码:

import Image from 'next/image'
import { Suspense } from 'react'
import { Skeleton } from '@/components/ui/skeleton'

// 正确用法
<div className="relative">
  <Suspense fallback={<Skeleton className="absolute inset-0 z-10 h-full w-full bg-gray-200 dark:bg-gray-800" />}>
    <Image
      src="/example.jpg"
      alt="示例图片"
      width={500}
      height={300}
      loading="lazy"
      suspense={true} // 关键配置
    />
  </Suspense>
</div>

2. 修复骨架的布局定位问题

你添加了position:absolute和z-10,但缺少父容器的position:relative,导致骨架脱离文档流后无法正确占位。给Suspense的直接父容器加上relative类,同时用inset-0让骨架完全填满父容器,确保和图片的占位尺寸一致。

3. 检查Suspense的边界范围

确保Suspense直接包裹触发Suspense的组件(比如配置好的Image),不要在中间嵌套无关组件。如果是远程图片,还要确认next.config.js中已添加图片域名到images.domains数组,避免加载异常导致Suspense不触发。

4. 排查样式冲突

检查是否有自定义样式覆盖了骨架的默认样式,比如opacity:0、display:none或者层级被其他元素压制。可以临时给骨架添加明确的背景色(如bg-gray-200),测试是否能正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:52:07