首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Next.js条件布局

Next.js条件布局
EN

Stack Overflow用户
提问于 2021-09-29 17:31:37
回答 2查看 1.5K关注 0票数 1

我已将_app.js更改为加载布局,具体取决于加载的页面。所有这些都可以在开发模式下很好地工作,但是一旦我创建了构建,它就无法获得"Component.name“并返回空值。有什么建议吗?

我的_app.js

代码语言:javascript
复制
import "../styles/globals.css";
import Layout from "../components/Layout";

function MyApp({ Component, pageProps }) {
  switch (Component.name) {
    case "Home":
      return <Component {...pageProps} />;
    default:
      return (
        <Layout>
          <Component {...pageProps} />{" "}
        </Layout>
      );
  }
}

export default MyApp;
EN

Stack Overflow用户

回答已采纳

发布于 2021-09-29 17:38:44

name是空的,因为代码细化删除了这个值或混淆了它们,所以您不应该依赖于类或函数的名称。

每页版面请遵循这份官方指南

基本上,您可以为每个页面创建getLayout函数,这个函数应该返回布局:

代码语言:javascript
复制
import Layout from '../components/layout'
import NestedLayout from '../components/nested-layout'

export default function Page() {
  return {
    /** Your content */
  }
}

Page.getLayout = function getLayout(page) {
  return (
    <Layout>
      <NestedLayout>{page}</NestedLayout>
    </Layout>
  )
}

_app中,可以这样使用它:

代码语言:javascript
复制
export default function MyApp({ Component, pageProps }) {
  // Use the layout defined at the page level, if available
  const getLayout = Component.getLayout || ((page) => page)

  return getLayout(<Component {...pageProps} />)
}
票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69381038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档