如何使_app.js
中包含Layout component的特定页面不换行?
例如,我有两个页面pages/home
和pages/about
,现在我如何才能**不使用Layout
组件 Package **我的pages/home
页面?
页数/_应用程序.js
import "../styles/globals.css";
import Layout from "../components/Layout";
function MyApp({ Component, pageProps }) {
return (
<Layout>
<Component {...pageProps} />
</Layout>
);
}
export default MyApp;
我尝试过的:
页数/_应用程序.js
function MyApp({ Component, pageProps }) {
console.log(typeof Component); // gives me a function
switch (Component) {
case Home():
return <Component {...pageProps} />;
default:
return (
<Layout>
<Component {...pageProps} />{" "}
</Layout>
);
}
}
页面/主页.js
import React from 'react';
const Home= () => {
return (<div>Hello</div>);
};
export default Home;
型
7条答案
按热度按时间ewm0tg9j1#
通过检查传递给它的
appProps.router.pathname
属性。路1
路2
提示:
可以使用
path.startsWith
检查所有路径,例如型
lxkprmvk2#
我认为有一种更简洁的方法可以做到这一点。我目前正在为所有页面创建一个默认布局,并为需要特定布局的页面覆盖它,例如在我的登录和注册页面。
v440hwme3#
我使用了
displayName
静态属性,它也可以在任何React.js组件中使用。然后在
_app.tsx
中使用switch...case
,如下所示:wfveoks04#
这个怎么样?希望可以保存
jucafojl5#
您可以简单地利用'next/router'中的useRouter,轻松完成您的工作。
2w3kk1z56#
使用higher order components怎么样?它们不是react API的一部分,但正如react文档所述,“它们是从React的组合特性中产生的模式。”Next使用react,因此在next中使用react模式确实有意义
以下代码使用预定义的
Header
和Footer
组件 Package 给定的组件,然后使用该组件的组件在导出时使用HOC Packagewi3ka0sx7#
我试过我的代码在这种方式和它的工作对我来说很好。