nextjs-创建layouts共用UI和独立pages页面

原文链接:https://nextjs.org/learn/dashboard-app/creating-layouts-and-pages

  • 01-nextjs起步
  • 02-css样式
  • 03-处理字体和图片
  • 05-页面之间的导航跳转
  • 更多

到目前为止,您的应用程序只有一个主页。让我们学习如何使用布局页面创建更多路由。

本章目标

  • 使用文件系统路由创建 dashboard路由。
  • 了解创建新路由时文件夹和文件的作用。
  • 创建可在多个dashboard页面之间共享的嵌套布局。
  • 了解主机代管、部分渲染和根布局是什么。

嵌套路由

Next.js使用文件系统路由,其中文件夹用于创建嵌套路由。每个文件夹代表一个映射到URL段的路由段。
image.png
您可以使用layout.tsx和page.tsx文件为每条路线创建单独的UI。
page.tsx是一个特殊的Next.js文件,用于导出React组件,它是访问路由所必需的。
在您的应用程序中,您已经有一个页面文件:/app/page.tsx 这是与根路由/关联的主页。
要创建嵌套路由,可以将文件夹嵌套在一起,并在其中添加page.tsx文件。例如
image.png
/app/dashboard/page.tsx与/dashboard路径相关联。让我们创建页面,看看它是如何工作的!

创建dashboard页面

在/app内创建一个名为dashboard的新文件夹。然后,在dashboard文件夹中创建一个新的page.tsx文件,其中包含以下内容:

export default function Page() {return <p>Dashboard Page</p>;
}

现在,确保开发服务器正在运行并访问http://localhost:3000/dashboard.您应该看到“Dashboard Page”文本。
这就是在Next.js中创建不同页面的方法:使用文件夹创建一个新的路由,并在其中添加一个页面文件。
通过为页面文件指定一个特殊名称,Next.js允许您对UI组件进行并置,test文件和其他与路由相关的代码。
只有页面文件中的内容才能公开访问。例如,/ui和/lib文件夹与路由一起位于/app文件夹中。

练习:创建仪表板页面

让我们练习创建更多路由。在您的面板中,再创建两个页面:

  • Customers Page:该页面应可在上访问http://localhost:3000/dashboard/customers.目前,它应该返回一个<p>Customers Page</p>元素。
  • Invoices Page:发票页面应可访问http://localhost:3000/dashboard/invoices.现在,还返回<p>Invoices Page</p>元素。

花点时间处理此练习,准备好后,展开下面的切换以获取解决方案:
您应该具有以下文件夹结构:
image.png
Customers Page:

export default function Page() {return <p>Customers Page</p>;
}

Invoices Page:

export default function Page() {return <p>Invoices Page</p>;
}

创建dashboard layout页面

dashboard具有某种可在多个页面之间共享的导航功能。在Next.js中,您可以使用一个特殊的layout.tsx文件来创建在多个页面之间共享的UI。让我们为dashboard页面创建一个layout布局!
/dashboard文件夹中,添加一个名为layout.tsx的新文件,并粘贴以下代码:

import SideNav from '@/app/ui/dashboard/sidenav';export default function Layout({ children }: { children: React.ReactNode }) {return (<div className="flex h-screen flex-col md:flex-row md:overflow-hidden"><div className="w-full flex-none md:w-64"><SideNav /></div><div className="flex-grow p-6 md:overflow-y-auto md:p-12">{children}</div></div>);
}

这段代码中发生了一些事情,所以让我们对其进行分解:
首先,将<SideNav/>组件导入到布局中。导入到此文件中,任何组件都将成为布局的一部分。
<Layout/>组件接收一个children props。此子项可以是页面,也可以是其他布局。在您的情况下,/dashboard内的页面将自动嵌套在<Layout/>中,如下所示:
image.png
通过保存您的更改并检查您的localhost来检查一切是否正常工作。您应该看到以下内容:
image.png
在Next.js中使用布局的一个好处是,在导航方面,只有页面组件会更新,而布局不会重新渲染。这称为部分渲染:
image.png

根layout

在第3章中,您将Inter字体导入到另一个布局中:/app/layout.tsx。作为提醒:

import '@/app/ui/global.css';
import { inter } from '@/app/ui/fonts';export default function RootLayout({children,
}: {children: React.ReactNode;
}) {return (<html lang="en"><body className={`${inter.className} antialiased`}>{children}</body></html>);
}

这被称为根布局,是必需的。
任何UI组件添加到根布局后,都将在应用程序的所有页面中共享。
您可以使用根布局来修改和标记,并添加元数据(您将在后面的章节中了解有关 meta 元数据的更多信息)。
由于您刚刚创建的新布局(/app/dashboard/layout.tsx)对于仪表板页面是唯一的,因此您不需要向上面的根布局添加任何UI。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/33902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习】科大睿智解读ITSS认证中咨询机构的作用

企业拥有ITSS认证这不仅将为企业开拓商机&#xff0c;提升竞争力&#xff0c;还能促使企业改进内部运维流程&#xff0c;提高服务质量&#xff0c;为客户提供更优质的IT运维支持。在ITSS认证中&#xff0c;咨询机构扮演着重要的角色&#xff0c;其主要作用包括以下几个方面&…

金融科技在智能投研领域的应用与前景

随着科技的飞速发展&#xff0c;金融科技&#xff08;FinTech&#xff09;正逐步渗透到金融行业的各个细分领域&#xff0c;其中智能投研领域作为金融科技的重要应用之一&#xff0c;正展现出巨大的潜力和广阔的前景。智能投研利用大数据、人工智能&#xff08;AI&#xff09;等…

【C++】类和对象(五)隐式类型转换

文章目录 一、再谈构造函数构造函数体赋值初始化列表初始化列表的语法必须放在初始化列表的成员注意&#xff1a; explict关键字的使用单参数构造函数支持隐式类型的转换多参数构造函数支持隐式类型的转换缺省值 的 形式 总结一个题目 一、再谈构造函数 构造函数体赋值 在创建…

如何解决Java中的ClassCastException异常

如何解决Java中的ClassCastException异常&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在Java开发中&#xff0c;ClassCastException异常是一个常…

Java高级重点知识点-14-Set接口、HashSet底层原理讲解

文章目录 Set接口 (HashSet 、LinkedHashSet)HashSet底层原理(重点理解) Set接口 (HashSet 、LinkedHashSet) 无序不重复 HashSet集合 HashSet 是根据对象的哈希值来确定元素在集合中的存储位置&#xff0c;因此具有良好的存取和查找性能。 public class HashSetDemo {publ…

新型防勒索病毒方案分享无需依靠病毒库

MCK具备可信系统&#xff0c;数据库保护&#xff0c;场景白名单&#xff0c;文件保护四大功能。如何运用在防勒索病毒中 在防勒索病毒的问题上&#xff0c;MCK主机的加固功能显得尤为重要。MCK的四大功能——可信系统、数据库保护、场景白名单以及文件保护&#xff0c;为我们在…

Excel 快速查询工具 2023.7.1 更新

Excel 快速查询工具作者表示这个软件是因为有时候需要在 Excel 和网站之间进行切换非常的麻烦&#xff0c;这款软件可以以半透明的方框位于桌面上。 特点 软件窗口半透明并至于顶部&#xff0c;无需来回切换界面。 实时查询&#xff0c;不用点击查询或者按回车之类的&#x…

IDEA 学习之 启动“卡死”

目录 1. 断点问题2. IDEA 版本问题 1. 断点问题 部分断点涉及应用启动&#xff0c;会导致启动“卡死” 2. IDEA 版本问题 部分 IDEA 版本存在启动问题&#xff0c;本人之前遇到过&#xff08;别人启动三分钟&#xff0c;我启动半个小时&#xff09;。更换别的版本&#xff…

文本和二进制混合存储

要想让文本和二进制混合存储&#xff0c;有两套方案&#xff1a; ①以文本为主&#xff0c;插入二进制数据 ②以二进制为主&#xff0c;区分文本和二进制数据段 第一套方案的例子&#xff1a; 时间戳[....]&#xff0c;这是一段64位二进制数据。 在这句话中&#xff0c;以二进制…

k8s强制删除一个 Pod

在Kubernetes&#xff08;K8s&#xff09;中强制删除一个Pod&#xff0c;通常是因为Pod处于错误状态或无法正常终止。以下是强制删除Pod的步骤和相关信息&#xff1a; ### 步骤一&#xff1a;获取Pod的名称 首先&#xff0c;你需要知道要删除的Pod的名称。可以使用kubectl get …

AI绘画工具的计算资源需求:深度解析与优化策略

引言 随着人工智能技术的飞速发展&#xff0c;AI绘画工具已经成为艺术创作和设计领域的新宠。这些工具利用深度学习算法&#xff0c;尤其是生成对抗网络&#xff08;GANs&#xff09;和变分自编码器&#xff08;VAEs&#xff09;&#xff0c;能够根据用户的指令或草图生成逼真…

Scala语言基础及进阶

Scala语言基础及进阶 1. 简介 Scala 是一种多范式的编程语言&#xff0c;融合了面向对象编程和函数式编程的特性。它运行在 JVM 上&#xff0c;并且与 Java 互操作性良好。Scala 由 Martin Odersky 于 2003 年设计并实现&#xff0c;目的是解决 Java 语言的一些局限性&#x…

docker技术的说明

根据学习网站整理&#xff1a;Docker 10分钟快速入门_哔哩哔哩_bilibili 小白也能看懂的容器科普说明_哔哩哔哩_bilibili 1.虚拟机&#xff0c;需要模拟硬件系统、运行整个操作系统&#xff0c;但体积臃肿&#xff0c;内存占用较高&#xff0c;程序的性能也会受到影响。 2.…

ubuntu离线安装docker导入镜像

docker安装包 准备工作 1.准备一个docker.service文件 内容如下&#xff1a; [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.docker.com Afternetwork-online.target firewalld.service Wantsnetwork-online.target[Service] Typenoti…

2024年全国VUE考试中心大全!

大家好&#xff0c;华为HCIA、HCIP、HCIE的笔试部分&#xff0c;都需要在VUE考试中心进行预约。但是很多同学都不知道当地VUE考试中心在哪里&#xff01; 为了解决大家的问题&#xff0c;这边整理了全国各大城市的VUE考试中心名称和详细地址。需要的小伙伴们可以来看看&#x…

JavaWeb系列十一: Web 开发会话技术(Cookie, Session)

韩sir Cookie技术Cookie简单示意图Cookie常用方法Cookie创建Cookie读取JSESSIONID读取指定Cookie Cookie修改Cookie生命周期Cookie的有效路径Cookie作业布置Cookie注意事项Cookie中文乱码问题 Session技术Session原理示意图Session常用方法Session底层机制Session生命周期Sessi…

开源模型应用落地-LangChain高阶-LCEL-表达式语言(八)

一、前言 尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。 LCEL是什么? LCEL是一种非常灵活和强大的语言,可以帮助您更…

网络自动化的未来:NMP在设备管理中的实现与应用

随着网络规模的不断扩大和复杂性增加&#xff0c;传统的手动网络管理方法已经无法满足现代IT环境的需求。网络管理平台&#xff08;NMP&#xff09;的出现&#xff0c;为网络设备的自动化管理提供了有效的解决方案。本文将探讨NMP如何实现网络设备的自动化管理&#xff0c;以及…

FuTalk设计周刊-Vol.062

#AI漫谈 热点捕手 1.阿里云推出首个AI程序员&#xff1a;分钟级完成应用开发 在阿里云上海 AI 峰会上&#xff0c;阿里云推出了首个「AI 程序员」&#xff0c;其具备架构师、开发工程师、测试工程师等岗位技能&#xff0c;能完成任务分解、代码编写、测试、问题修复、代码提交…

react学习——14react生命周期图(旧)

1、生命周期图 2、单个组件 class Demo extends React.Component{//构造器constructor(props){console.log("count--constructor")super(props)this.state{count: 1}}//组件将要挂载componentWillMount(){console.log("count--componentWillMount")}//组件…