在 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 上加载页面 的相关文章

  • 如何抑制 IE9 window.close() 确认消息

    应用 window close 函数后 IE9 会引发 您正在查看的网页正在尝试关闭 消息 有没有办法在不更改应用程序代码的情况下 而是通过更改一些特定于 IE 的注册表项来抑制此消息 如果窗口不是由脚本打开的 IE 不允许在没有确认的情况
  • 将 Javascript 正则表达式转换为 PHP

    我知道这个问题已经被问了大约十几次 但是从技术上讲 这个问题并不是一个骗局 如果您愿意 请检查其他问题 基本上 我有一个 Javascript 正则表达式来检查用于前端验证的电子邮件地址 并且我使用 CodeIgniter 在后端进行双重检
  • 显示来自 mongodb 的所有数据并在 doT.js 模板引擎中渲染它

    我想从 mongodb 中提取数据并将其传递给视图 一切似乎都正常 但我没有看到所有 10000 条记录都显示出来 而是只看到了一条 我觉得我非常接近解决它 但我陷入困境 我正在使用node mongodb native express和d
  • 更改模板标签 <# {% {{ 等后,John Resig 的微模板出现语法错误

    我在使用 John Resig 的 Micro 模板时遇到了一些麻烦 谁能帮我解释为什么它不起作用 这是模板 以及发动机的改装部分 str replace r t n g split join t replace gt t g 1 r re
  • webpack 加载器并包含

    我是 webpack 的新手 我正在尝试了解加载器及其属性 例如测试 加载器 包含等 这是我在 google 中找到的 webpack config js 的示例片段 module loaders test js loader babel
  • React 状态总是从 Fabricjs 的回调中返回先前(或初始)状态

    下面的代码是我的最小问题重现组件 它初始化织物画布 并处理 模式 状态 模式状态决定画布是否可以编辑 并且一个简单的按钮控制该状态 问题是 即使mode setMode工作正常 意思是 单击按钮后组件分析器显示正确的状态 按钮内的文本也显示
  • VSCode 在 React 的 JSX 中错误地格式化三进制

    我正在运行 VSCode 来开发我的 React 应用程序 我有一个简单的三元 isLoading
  • 如何在 Angular 模板中嵌入 GitHub gist?

    角度忽略script其模板中包含标签 但加载 GitHub gist 需要它们 执行此操作的最佳做 法是什么 使用iframe 创造script动态标记 或者是其他东西 一种方法是创建一个iframe with script里面并在你希望你
  • Javascript:更改浏览器后退按钮的功能

    有没有办法让用户的浏览器上的后退按钮调用 JavaScript 函数而不是返回页面 您无法覆盖这样的行为 如果用户通过链接访问您的页面 则单击 后退 将使他们再次离开该页面 但是 您可以使页面上的 JavaScript 操作将条目添加到历史
  • JavaScript 中的凯撒密码

    我正在尝试编写一个程序来解决javascript中的以下问题 写在本段下面 我不知道为什么我的代码不起作用 有人可以帮助我吗 我是 JavaScript 新手 这是一个免费的代码训练营问题 现代常见的用法是 ROT13 密码 其中字母的值移
  • 使用 jQuery animate 时,有没有办法隐藏 webkit 浏览器中显示的工件?

    我正在使用 jQuery animate 在网页上的项目中滑动 由于某种原因 只有在 webkit 浏览器中 元素动画的空间中才会出现伪影痕迹 有没有办法阻止或隐藏这种情况 一旦您加载此处的页面 它们就会出现在轮播上 http www my
  • EmberJS:如何为 ember-data RESTAdapter 中的模型提供特定的 URL?

    问题一 如果我有一个名为 Company 的余烬数据模型 我如何告诉它点击 businesses and businesses id而是检索记录 有没有办法指定给定模型的 url 更好的是 像 BackboneJS 一样 我可以在运行时计算
  • 允许在 Safari 上聊天应用程序使用 audio.play()

    由于苹果禁用了自动播放音频的功能HTMLMedia Element play https developer mozilla org en US docs Web API HTMLMediaElement play在没有用户交互的 java
  • NodeJS 错误堆栈未定义 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在使用节点检查器 我注意到new Error 有未定义的堆栈 如果我将此值分配给一个变量 该变量将显示堆栈未定义 有趣的是 跑步new
  • Kotlin JavaScript 到 TypeScript 定义文件

    我已经找到了ts2kt 库 https github com Kotlin ts2kt这将从任意位置创建 Kotlin 头文件 d ts文件 但是 我想朝相反的方向走 我想构建一个可以编译为 JavaScript 的 Kotlin 库 但我
  • “x modulo y”的结果是什么?

    引用 ECMAScript 规范第 5 2 节 符号 x modulo y y 必须是有限且非零 计算 值 k 与 y 具有相同的符号 或零 使得 abs k 因此 如果 y 为正 则 x modulo y 的结果 k 为正 无论 x 的符
  • 如何使用函数组件和 React Router v5 拦截 React SPA 中的后退按钮

    我正在 React 中的 SPA 中工作 不使用 React Router 来创建任何路由 我不需要允许用户导航到特定页面 想想多页调查问卷 按顺序填写 但是 当用户按下后退按钮时在浏览器上 我不希望他们退出整个应用程序 我希望能够在用户按
  • 使用 JQueryUI Autocomplete 和 Meteor 的规范方法

    使用 Meteor 我想了解使用 JQuery UI 自动完成处理大量服务器端数据的最有效方法 我有两个工作提案 想听听关于差异的意见 以及是否有更好的方法来做同样的事情 使用发布 订阅 Server Meteor publish auto
  • Javascript 最佳实践,为什么使用逗号来链接函数/变量声明?

    我一直在为 jQuery jQueryLog 开发一个插件 以允许调试链选择器和返回值 如果你想检查一下 你可以这样做here http www jquerylog com 这已经是第二个版本了 第一个版本实际上是经过编辑的 jQuery
  • 从外部material-ui组件访问主题

    我有一个使用标准深色主题的主题提供商 我希望能够从我自己的自定义组件访问该主题的详细信息 但我不知道如何做到这一点 在下面的例子中 this props theme未定义 ReactDOM render

随机推荐

  • 绘制包含 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