开发者问题收集

我怎样才能在 Next Js 中做到这一点

2020-06-26
389

在 NextJs 应用中我想添加一个带导航的路由 /cabinet ,尽管应用本身已经在 _app.js 中定义了导航栏,是否可以为 /cabinet /cabinet/something 添加一个 _app.js 的类似物?即为单独的目录添加带路由的导航。

- pages
-- api
-- app.js
-- index.js
-- cabinet
--- settings.js
--- panel.js
1个回答

文档没有提到存在多个 _app.js 文件的可能性,而且我快速浏览 Next.js 源代码也没有看到任何允许这样做的内容。因此,您可以:

  1. 将导航栏重构为其自己的组件,并仅在需要时将其导入,而不是将其留在 _app.js 中。(这可能是明智的做法。)

  2. 或者,修改 _app.js 以仅为 cabinet 目录之外的 URL 呈现常规导航栏。您需要将 router 属性添加到组件的参数列表中,该属性 始终存在 ,但未显示在 _app.js 的文档页面中:

    function MyApp({ Component, pageProps, router }) {
    const isCabinet = router.pathname.includes("/cabinet/");
    return <>{ isCabinet ? <CabinetNav /> : <Nav /> }
    <Component {...pageProps} />
    </>;
    }
    
jdaz
2020-06-26