Next.js 怎样获取当前页面的加载进度? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dream4ever
V2EX    Next.js

Next.js 怎样获取当前页面的加载进度?

  •  
  •   dream4ever 83 天前 1379 次点击
    这是一个创建于 83 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有一个需求,就是在页面之间跳转时,需要显示一个进度条告知用户页面加载进度。

    问了 DeepSeek ,Google 也查了查,都没找到能获取实际加载进度的解决方案。

    8 条回复    2025-07-18 13:54:56 +08:00
    dudubaba
        1
    dudubaba  
       83 天前
    window.onload 一般精准的算不出来,就是模拟,比如 1s 内算加载 70%,3S 内加载完就是 100%,加载不完进度条在 90%,等 onload 时间执行完成后就 100%;
    shakaraka
        2
    shakaraka  
    PRO
       83 天前
    都是用假的。参考 youtube
    Iamadog
        3
    Iamadog  
       83 天前
    你直接监听计算路由地址切换的时间试试
    Iamadog
        4
    Iamadog  
       83 天前
    如果只是加一个进度条的话可是试试 nextjs-toploader
    dream4ever
        5
    dream4ever  
    OP
       83 天前
    @Iamadog 如果只是这个需求很简单,问 AI 都能给我搞定,哈哈。
    rocmax
        6
    rocmax  
       83 天前 via Android
    做个假的,延时 1 秒播个动画再触发路由跳转。或者 suspense 的 fallback 里播个到 99%的动画。

    更有意义的可能是在播动画时把 data prefetch 做了,这个进度可以监视,然后直接跳转就好了。

    要显示当前页面载入进度也得等页面下载完先渲染出进度条组件,这个时候如果不是需要请求大量数据的话跟直接显示页面内容没太大差别。
    zzzyyysss
        7
    zzzyyysss  
       83 天前
    这就是无解的需求吧,首先如何确定这个页面到底需要加载多大的资源,页面里的多媒体文件算不算?通过 css 引入的图片 字体 其它 css 这些算不算?还有更多动态引入的资源。
    youtube 那个就是最优的解。让用户感知页面正在加载,如果一个页面超过 3 秒加载不出来,那用户已经没有兴趣打开了。如果 3 秒内能打开,那加载进度是不是不是很重要。
    这不是下载一个大文件,我需要知道下载了多少,还剩多少。
    yimity
        8
    yimity  
       83 天前
    ```
    const [isPending, startTransition] = useTransition();
    startTransition(() => {
    push(`${pathname}`);
    });
    ```
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2825 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 13:35 PVG 21:35 LAX 06:35 JFK 09:35
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86