小编iAm*_*Why的帖子

Next.js 13 - 有不同的共享布局

我现在想升级到 Next 13。我的投资组合上有不同的导航栏。如何为 /about 和 /skills 路由使用与主页和 /contact 路由不同的导航栏?

我认为您现在可以在应用程序目录中创建不同的子文件夹,每个子文件夹都包含layout.tsx 文件,但随后会创建相应的不需要的路由。

我尝试了以下文件结构:

/app/LayoutOne/layout.tsx
/app/LayoutOne/page.tsx
/app/LayoutOne/contact/page.tsx
/app/LayoutTwo/layout.tsx
/app/LayoutTwo/about/page.tsx
/app/LayoutTwo/skills/page.tsx
Run Code Online (Sandbox Code Playgroud)

但后来我有以下路线:

../LayoutOne
../LayoutOne/contact
../LayoutTwo/about
../LayoutTwo/skills
Run Code Online (Sandbox Code Playgroud)

我不想要 URL 中的布局部分

next.js next.js13

17
推荐指数
2
解决办法
1万
查看次数

NextJs 13:滚动到某个部分的链接

我想链接单个页面上的不同部分。我已经看到了这个问题,但它对我不起作用。下面我创建了一个演示,它对于我的两次尝试来说尽可能清晰:

第一次尝试:

app/layout.tsx:

<Link href="#home" scroll={false}> Home </Link>
<Link href="#about" scroll={false}> About </Link>


app/page.tsx:

<section id="home" className="min-h-screen">home</section>
<section id="about" className="min-h-screen">about</section>
Run Code Online (Sandbox Code Playgroud)

当我尝试单击链接时,我在浏览器中运行的开发人员中看到以下错误: 第一次尝试的浏览器错误


第二次尝试:

我在链接中添加了斜杠,以引用主页的路线

app/layout.tsx:

<Link href="/#home" scroll={false}> Home </Link>
<Link href="/#about" scroll={false}> About </Link>


app/page.tsx:

<section id="home" className="min-h-screen">home</section>
<section id="about" className="min-h-screen">about</section>
Run Code Online (Sandbox Code Playgroud)

现在,浏览器会跳转到两个链接的页面顶部,即主页部分。对于“关于”链接,它当然也应该滚动到适当的部分。


编辑 2022 年 12 月 4 日:

它似乎与 Next 的链接组件有关,因为当我用 F12 打开开发人员工具并单击从链接组件生成的 a 标签中的链接时,滚动到各个部分就可以了。

next.js

7
推荐指数
1
解决办法
4162
查看次数

标签 统计

next.js ×2

next.js13 ×1