Автор:
    БозданиС:2026-06-22ПослСднСС обновлСниС:2026-09-27

    Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Next.js: ДокумСнтация Ρ…ΡƒΠΊΠ° usePathname

    Π₯ΡƒΠΊ usePathname Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ Next.js с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ сСгмСнтом Π»ΠΎΠΊΠ°Π»ΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для создания Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для опрСдСлСния Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ элСмСнта Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ) Π±Π΅Π· нСобходимости Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ прСфикс Π»ΠΎΠΊΠ°Π»ΠΈ.

    Π˜ΠΌΠΏΠΎΡ€Ρ‚ usePathname Π² Next.js

    typescript
    import { usePathname } from "next-intlayer";
    

    ΠžΠ±Π·ΠΎΡ€

    usePathname ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ встроСнный Ρ…ΡƒΠΊ usePathname() ΠΈΠ· next/navigation, добавляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ поиска (search params) ΠΈ удаляСт прСфикс Π»ΠΎΠΊΠ°Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ getPathWithoutLocale. Он запускаСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π₯ΡƒΠΊ доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² клиСнтских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… (Client Components, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ "use client").

    ИспользованиС

    src/components/NavItem.tsx
    "use client";
    
    import type { FC } from "react";
    import { usePathname } from "next-intlayer";
    
    type NavItemProps = {
      href: string;
      label: string;
    };
    
    const NavItem: FC<NavItemProps> = ({ href, label }) => {
      const pathname = usePathname();
      const isActive = pathname === href;
    
      return (
        <a href={href} aria-current={isActive ? "page" : undefined}>
          {label}
        </a>
      );
    };
    
    export default NavItem;
    

    Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

    ВипОписаниС
    stringΠ’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ Π±Π΅Π· прСфикса Π»ΠΎΠΊΠ°Π»ΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса Π»ΠΎΠΊΠ°Π»ΠΈ.

    ПовСдСниС

    • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈ: УдаляСт Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ сСгмСнт Π»ΠΎΠΊΠ°Π»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, /ru/dashboard β†’ /dashboard).
    • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² поиска: Π’Π°ΠΊΠΆΠ΅ удаляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса ?locale=... ΠΏΡ€ΠΈ использовании Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° основС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² поиска.
    • Π Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: АвтоматичСски обновляСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· Next.js App Router.
    • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ для SSR: Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сСрвСрный ΠΏΡƒΡ‚ΡŒ Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€Π°, Π° Π·Π°Ρ‚Π΅ΠΌ синхронизируСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ поиска Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅.

    Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с useLocale

    Π₯ΡƒΠΊ useLocale ΠΈΠ· next-intlayer ΡƒΠΆΠ΅ прСдоставляСт pathWithoutLocale ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ usePathname, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΡ‚ΡŒ, ΠΈ Π½Π΅ трСбуСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΠΈ.

    tsx
    // Когда Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ состояниС Π»ΠΎΠΊΠ°Π»ΠΈ, ΠΈ ΠΏΡƒΡ‚ΡŒ:
    import { useLocale } from "next-intlayer";
    const { locale, pathWithoutLocale } = useLocale();
    
    // Когда Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΡ‚ΡŒ:
    import { usePathname } from "next-intlayer";
    const pathname = usePathname();
    

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€

    src/components/Sidebar.tsx
    "use client";
    
    import type { FC } from "react";
    import { usePathname } from "next-intlayer";
    
    const links = [
      { href: "/dashboard", label: "ПанСль управлСния" },
      { href: "/settings", label: "Настройки" },
    ];
    
    const Sidebar: FC = () => {
      const pathname = usePathname();
    
      return (
        <nav>
          {links.map(({ href, label }) => (
            <a
              key={href}
              href={href}
              style={{ fontWeight: pathname === href ? "bold" : "normal" }}
            >
              {label}
            </a>
          ))}
        </nav>
      );
    };
    
    export default Sidebar;
    

    БвязанныС рСсурсы