Adakah cara untuk mencegah rootlayout
被 dashboardlayout
包裹? Next.js v13
Dokumentasi:
Struktur fail saya:
Saya boleh menggunakan kumpulan laluan; walau bagaimanapun, berbuat demikian akan melumpuhkan pembungkusan dalam contact
、pricing
laluan saya. Adakah terdapat cara untuk mengelakkan perkara ini daripada berlaku? Saya mahu bar navigasi rumah berada pada maklumat hubungan dan halaman harga, tetapi saya tidak mahu bar navigasi rumah berada pada papan pemuka.
Saya cuba menggunakan kumpulan penghalaan; walau bagaimanapun, ia melumpuhkan pembungkusan harga dan laluan kenalan saya.
navbar.tsx
"use client"; import { useEffect, useState } from "react"; import { Disclosure } from "@headlessui/react"; function joinClassName(...classes: string[]) { return classes.filter(Boolean).join(" "); } 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> ); }
Terima kasih kepada
Navbar
是一个 客户端组件 a>,您可以避免使用路由组,但能够通过使用usePathname
来阻止它显示在/dashboard
in> anda, seperti ini:Selepas beberapa penggalian, saya berjaya membuatnya berfungsi dengan kumpulan laluan.
Struktur fail
/app/layout.tsx
/app/(破折号)/dashboard/layout.tsx
/app/(登陆)/layout.tsx
Penyelesaian Youssouf berfungsi dengan baik. Walau bagaimanapun, laluan papan pemuka masih mempunyai komponen yang ditunjukkan dalam
rootlayout
CSS 样式和其他组件,这需要我手动将代码行添加到我不希望在/dashboard
.