在 nextjs 13 上加载页面

2024-02-10

您好,我正在尝试在网站需要时间加载时显示加载页面。因为它是一个相当大的网站,我认为加载屏幕会提供最好的用户体验,但是我似乎无法弄清楚如何让它在 nextjs 13 上工作。我创建了一个简单的功能组件,上面写着加载...并且有将其直接导入到我的layout.jsx文件夹中。

我正在使用应用程序目录方法,这是相当新的,而且我在 nextjs 也是新的,所以我有点迷失^^

我想我可能需要在某个时候设置状态,但我似乎无法弄清楚何时何地进行设置

任何建议都会很棒。

thanks

import "./globals.css";
import React, { useState, useEffect } from "react";
import Loading from "../components/loading/loading";

const Layout = ({ children, dataLoaded }) => {
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    if (dataLoaded) {
      setLoading(false);
    }
  }, [dataLoaded]);

  return (
    <body className="app {oswald.className}">
      {loading && <Loading />}
      {children}
    </body>
  );
};

export default Layout;

. . .

尝试 1 -

按照下面的答案之一后,我的加载页面似乎根本没有显示。并且没有出现错误。

我的布局如下

布局.jsx

import "./globals.css";
import { Suspense } from "react";
import Loading from "../components/loading/loading";

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <head />
      <body>
        <Suspense fallback={<Loading />}>{children}</Suspense>
      </body>
    </html>
  );
}

加载页面.js

const LoadingPage = () => {
  return (
    <div className="loading w-screen h-screen bg-red-100">
      <p>Loading...</p>
    </div>
  );
};

export default LoadingPage;

加载.js

import LoadingPage from "@/components/loading/loading";

export default function Loading() {
  return <LoadingPage />;
}

在 NextJS 13 中,实际上有一种默认方法来处理页面内的加载状态。你可以声明一个loading.tsx文件在你的/app目录,内容如下:

export default function Loading() {
  return <Loading />
}

然后,在你的Layout,你可以用一个包裹你的页面Suspense标签,像这样:

<Layout>
  <Navbar>
  ...
  <Suspense fallback={<Loading/>}>
    <Page/>
  </Suspense>
</Layout>

Your loading状态将在导航时自动处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 nextjs 13 上加载页面 的相关文章

随机推荐

  • 绘制包含 80% (x, y) 点的圆

    我有一个二维数组 x y 的点 我想绘制一个包含该点 80 的圆 并且我想知道所得圆的半径 有没有办法用 python 来做到这一点 我一直在寻找一种方法来做到这一点 但没有成功 我很抱歉没有尝试 但我完全迷失了在不给圆半径的情况下取 80
  • 进程何时处理信号

    我想知道linux进程什么时候处理信号 假设进程已经安装了信号的信号处理程序 我想知道进程的正常执行流程何时会被中断并调用信号处理程序 根据http www tldp org LDP tlk ipc ipc html http www tl
  • 访问实例变量的语法? (目标-C)

    在 Objective C 中访问实例变量的正确语法是什么 假设我们有这个变量 interface thisInterface UIViewController NSMutableString aString property nonato
  • 与D3的关系图

    如何使用 D3 创建以下图表 我不知道这种类型的可视化的名称 我能找到的最接近的是 力导向 图 图例 填充的节点是人 非填充的节点是属性 例如最喜欢的颜色 这是我的版本 http jsfiddle net doraeimo JEcdS em
  • Python win32com“参数数量无效”

    我正在尝试使用 win32com 使用以下代码将多个 xlsx 文件转换为 xls import win32com client f r input xlsx xl win32com client gencache EnsureDispat
  • iOS 应用程序上的自定义字体 - 在模拟器中工作但不适用于 iPad

    在这里遇到一个奇怪的问题 我正在为我的学校项目 非商业 开发一个游戏 并且我正在使用自定义字体黑法院 http www dafont com black chancery font 根据 GNU GPL 免费 我遵循了多个来源的说明 其中包
  • Word 2016 for Mac 中的 CreateObject(“Excel.Application”)

    我有 Word 2016 VBA 代码来读取 Excel 文档中的数据 这适用于 Windows 平台 Windows 7 和 Windows 10 在 Mac 上 它失败了CreateObject Excel Application 操作
  • 子查询和相关子查询的区别

    下面的 SQL 查询是普通查询还是相关子查询 SELECT UserID FirstName LastName DOB GFName GLName LoginName LoginEffectiveDate LoginExpiryDate P
  • SqlBulkCopy,用引号引起来的字符串变量

    当尝试批量复制到 ASP NET MVC 项目中的 SQL Server 数据库时 我收到此错误 数据源中 String 类型的给定值无法转换为指定目标列的 nvarchar 类型 我查看了类似的问题 发现 1 帮助我查明了我的问题 c 无
  • Service Worker 不会缓存 Manifest start_url

    我正在使用 Lighthouse 来审核我的网络应用程序 我正在克服失败 但我坚持这一点 失败 Service Worker 未缓存 Manifest start url In my manifest json I have start u
  • 获取 RGB 颜色并使用 iPhone 上的 UIColor 对其进行标准化

    我正在寻找一种直接的方法来从 RGB 转换颜色 从 Photoshop 等工具中获取它 然后将其转换为 UIColor 由于 UIColor 对每个颜色空间使用 0 0 到 1 0 的标准化色域 因此我不确定这是如何完成的 感谢您的解决方案
  • 求圆上任意弧的长度

    我有一个有趣的 无论如何对我来说 问题 我正在 OpenServo org for V4 上工作 我正在尝试确定行进弧的长度及其方向 我有一个磁性编码器 可以返回从 0 到 4095 的轴位置 伺服系统有两个逻辑终点 称为 MAX 和 MI
  • 如何使用 JPA 和 Hibernate 映射组合键?

    在此代码中 如何为组合键生成 Java 类 how to composite key in hibernate create table Time levelStation int 15 not null src varchar 100 n
  • pthread_cond_timedwait 立即返回

    我有一个奇怪的问题 我有以下代码 dbg condwait timeout d d n abs timeout gt tv sec abs timeout gt tv nsec ret pthread cond timedwait q gt
  • Spring JavaMailSenderImpl:在哪里设置字符集?

    如果您使用 Spring JavaMailSenderImpl 您在哪里定义发送邮件所用的字符集 我们将 Spring JavaMailSenderImpl 与从 Websphere Application Server 6 1 获得的邮件
  • java中的时间同步

    在 for 循环中 我通过检索和处理车辆信息来控制基于模拟步骤的交通模拟器 SUMO 为了确保我的程序 实时 模拟 1 个模拟步骤 1 秒 我想在处理阶段之后让我的程序休眠 直到下一个时间步骤开始 为了获得更好的结果 我根据最初采用的参考时
  • ActionBar 中的 ProgressBar,例如具有刷新功能的 GMail 应用程序

    我想做与 Honeycomb 平板电脑上的 GMail 应用程序相同的事情 单击 刷新 按钮时 该图标将替换为进度条 我怎样才能做到这一点 Thanks 好吧 我尝试了 Cailean 的建议 但它对我不起作用 每次我想将不确定的进度恢复到
  • DOM 更新后的大循环无法及时渲染

    我的页面中有大约 9000 个元素 必须经常重建 这可能需要几秒钟的时间 所以 我制作了一个小的覆盖小部件 用一个覆盖元素Loading 信息 在我重建元素之前 我调用showOverlay 在循环之后我调用hideOverlay 但是循环
  • 如何停止 JShell / Kulla 中的无限循环?

    JShell 是一个 Java REPL 计划与 Java 9 一起发布 但是 它有一个公开测试版 如果我通过键入以下内容在 JShell Kulla 项目 中创建无限循环 gt while true JShell 将永远循环 除了完全退出
  • 在 nextjs 13 上加载页面

    您好 我正在尝试在网站需要时间加载时显示加载页面 因为它是一个相当大的网站 我认为加载屏幕会提供最好的用户体验 但是我似乎无法弄清楚如何让它在 nextjs 13 上工作 我创建了一个简单的功能组件 上面写着加载 并且有将其直接导入到我的l