有没有办法防止rootlayout
被dashboardlayout
包裹?Next.js v13
doc:
我的文件结构:
我可以使用路由组;但是,这样做会禁用我的contact
,pricing
路由中的 Package 。有什么方法可以防止这种情况发生吗?我想在联系人和定价页面上显示主页导航栏,但不想在 Jmeter 板中显示主页导航栏。
我尝试使用路由组;但是,它禁用了我的定价和联系路线中的 Package 。navbar.tsx
"use client";
import Link from "next/link";
import Image from "next/image";
import { useEffect, useState } from "react";
import { Disclosure } from "@headlessui/react";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faBars, faTimes } from "@fortawesome/free-solid-svg-icons";
function joinClassName(...classes: string[]) {
return classes.filter(Boolean).join(" ");
}
const navigationList = [
{
title: "API",
href: "/api",
},
{ title: "Pricing", href: "/pricing" },
{ title: "Contact", href: "/contact" },
{ title: "Demo", href: "/demo" },
];
export default function Navbar() {
const [navbar, setNavbar] = useState(false);
const changeBackground = () => {
if (window.scrollY >= 64) {
setNavbar(true);
} else {
setNavbar(false);
}
};
useEffect(() => {
changeBackground();
window.addEventListener("scroll", changeBackground);
});
return (
<Disclosure as="nav">
{({ open, close }) => (
<>
<div
className={joinClassName(
navbar || open ? "dark:bg-black bg-white" : "bg-transparent",
" fixed top-0 left-0 right-0 z-50 "
)}
>
</div>
</>
)}
</Disclosure>
);
}
2条答案
按热度按时间q3qa4bjr1#
由于您的
Navbar
是一个客户端组件,您可以避免使用路由组,但仍然能够防止它显示在/dashboard
中,通过使用usePathname
,如下所示:eyh26e7m2#
在做了一些挖掘之后,我设法使它与路由组一起工作。
文件结构
/app/layout.tsx
/app/(dash)/dashboard/layout.tsx
/app/(landing)/layout.tsx
Youssouf的解决方案工作得很好。但是, Jmeter 板路线仍然会有
rootlayout
CSS样式和其他组件,这将需要我手动添加代码行到我不希望在/dashboard
中显示的组件。