查看: 93|回覆: 0

Next.js 13 如何使用loading.js

[複製鏈接]

2

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2008-7-22
發表於 2023-4-5 17:16:00 | 顯示全部樓層 |閲讀模式

要在next.js 13中使用loading.js,我们需要先在对应的文件目录下创建loading.js文件
文件结构如下:

  • app
    • test1
      • loading.tsx
      • page.tsx

如上面的目录结构所示,我们创建了/test1路径下的页面,以及其对应的loading组件

我们知道,nextjs 13 的组件默认都是服务端渲染(Server-side Rendering),但是当服务端渲染组件需要较长的时间时,可能会对用户造成一些不好的体验,具体表现为网页一直在加载,但一直没有响应。
那么如何在服务端渲染的时候及时给予用户反馈呢,这时我们就可以用到nextjs 13提供的new feature,loading组件

// Loading.tsx
export default function Loading() {
  return (
    <>
      <h1 className="text-yellow-200 text-3xl">Loading...</h1>
    </>
  );
}

我们在page.tsx中做了一个睡眠三秒钟的操作,来模拟服务端需要长时间渲染的场景,这时在我们访问/test1路径时,页面就会在前三秒时展示Loading... ,等到服务端渲染完成就会展示:after 3000 ms!
同时我们也可以在控制台中看到 in executing sleep!的输出,这证明了我们正在进行服务端渲染。

// page.tsx
export default async function Test() {
  const message = await new Promise<string>((resolve) => {
    console.log('in executing sleep!')
    setTimeout(() => resolve("after 3000 ms!"), 3000);
  });
  return <h1>{message}</h1>;
}


来源:https://www.cnblogs.com/azoux/p/17289923.html
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部