cari

Rumah  >  Soal Jawab  >  teks badan

Bolehkah komponen reka letak akar disembunyikan dalam beberapa laluan bersarang di dalam folder aplikasi Next.js?

Adakah cara untuk mencegah rootlayoutdashboardlayout 包裹? Next.js v13 Dokumentasi:

Struktur fail saya:

Saya boleh menggunakan kumpulan laluan; walau bagaimanapun, berbuat demikian akan melumpuhkan pembungkusan dalam contactpricing 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>
  );
}

P粉418351692P粉418351692291 hari yang lalu438

membalas semua(2)saya akan balas

  • P粉982054449

    P粉9820544492024-03-27 09:56:37

    Terima kasih kepada Navbar 是一个 客户端组件,您可以避免使用路由组,但能够通过使用 usePathname/dashboard in> anda, seperti ini:

    "use client";
    
    // Other imports ...
    
    import { usePathname } from "next/navigation";
    
    export default function Navbar() {
      const pathname = usePathname();
      // useEffect and other codes ...
    
      if (pathname == "/dashboard") {
        return <>;
      }
      return 
    Actual content
    ; }

    balas
    0
  • P粉807239416

    P粉8072394162024-03-27 09:09:48

    Selepas beberapa penggalian, saya berjaya membuatnya berfungsi dengan kumpulan laluan.

    Struktur fail

    /app/layout.tsx

    export default function RootLayout({
      children,
    }: {
      children: React.ReactNode;
    }) {
      return (
        
          {children}
        
      );
    }

    /app/(破折号)/dashboard/layout.tsx

    export default function DashboardLayout({
      children,
    }: {
      children: React.ReactNode;
    }) {
      return 
    {children}
    ; }

    /app/(登陆)/layout.tsx

    export default function LandingLayout({
      children,
    }: {
      children: React.ReactNode;
    }) {
      return (
        
    {children}
    ); }

    Penyelesaian Youssouf berfungsi dengan baik. Walau bagaimanapun, laluan papan pemuka masih mempunyai komponen yang ditunjukkan dalam rootlayout CSS 样式和其他组件,这需要我手动将代码行添加到我不希望在 /dashboard.

    balas
    0
  • Batalbalas