You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js嵌套布局实现:为/docs路径配置带Sidebar的子布局

Next.js Pages Router 路径专属嵌套布局实现方案

按以下两步操作即可实现无需修改每个docs页面,自动给/docs路径下所有页面继承全局父布局+挂载Sidebar的效果:

步骤1:创建Docs专属嵌套布局组件

在你的组件目录下新建/components/Layouts/DocsLayout.js,代码如下:

// 请根据你的实际文件路径调整Sidebar的引入地址
import Sidebar from "../Sidebar";

export default function DocsLayout({ children }) {
  return (
    {/* 可根据你的设计需求自定义外层容器样式 */}
    <div style={{ display: "flex", gap: "2rem", padding: "1.5rem 0" }}>
      {/* 侧边栏固定区域 */}
      <Sidebar />
      {/* 文档内容渲染区域 */}
      <div style={{ flex: 1 }}>
        {children}
      </div>
    </div>
  )
}

步骤2:修改_app.js 自动根据路由匹配布局

利用Next.js内置的路由钩子判断当前访问路径,自动给/docs前缀的页面套入Docs布局,修改后的_app.js代码如下:

import { useRouter } from "next/router";
import Layout from "../components/Layouts/Layout";
import DocsLayout from "../components/Layouts/DocsLayout";
import "../styles/globals.css";

function MyApp({ Component, pageProps }) {
  const router = useRouter();
  // 匹配所有/docs开头的路由
  const isDocsPage = router.pathname.startsWith("/docs");

  return (
    <Layout>
      {isDocsPage ? (
        <DocsLayout>
          <Component {...pageProps} />
        </DocsLayout>
      ) : (
        <Component {...pageProps} />
      )}
    </Layout>
  );
}

export default MyApp;

补充提醒

建议把Sidebar组件内的Link地址修改为绝对路径(前缀加/),避免嵌套路由下跳转异常:

// 修改示例
<Link href="/docs/page1"><a>Page 1</a></Link>

内容的提问来源于stack exchange,提问作者Mehdi Saqlen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:27:01