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

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

    Ѐункция usePathname Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ (pathname) Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ сСгмСнтом Π»ΠΎΠΊΠ°Π»ΠΈ, Π² Π²ΠΈΠ΄Π΅ Svelte-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Readable<string>. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для создания Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ локаль (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для опрСдСлСния Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню) Π±Π΅Π· нСобходимости Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ прСфикс Π»ΠΎΠΊΠ°Π»ΠΈ.

    Π˜ΠΌΠΏΠΎΡ€Ρ‚ usePathname Π² Svelte

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

    ΠžΠ±Π·ΠΎΡ€

    usePathname создаСт Svelte readable store, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ window.location.pathname, удаляСт прСфикс Π»ΠΎΠΊΠ°Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ getPathWithoutLocale, ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ событиС popstate (навигация Π½Π°Π·Π°Π΄/Π²ΠΏΠ΅Ρ€Π΅Π΄). ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ синтаксиса $ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ….

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

    src/components/NavItem.svelte
    <script lang="ts">
      import { usePathname } from "svelte-intlayer";
    
      export let href: string;
      export let label: string;
    
      const pathname = usePathname();
    </script>
    
    <a {href} aria-current={$pathname === href ? "page" : undefined}>
      {label}
    </a>
    

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

    ВипОписаниС
    Readable<string>Svelte readable store (Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅), содСрТащСС Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ (pathname) Π±Π΅Π· прСфикса Π»ΠΎΠΊΠ°Π»ΠΈ.

    ПовСдСниС

    • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈ: УдаляСт Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ сСгмСнт Π»ΠΎΠΊΠ°Π»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, /ru/dashboard β†’ /dashboard).
    • Π Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: АвтоматичСски Π²Ρ‹Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ событиях popstate (навигация Π½Π°Π·Π°Π΄/Π²ΠΏΠ΅Ρ€Π΅Π΄ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅).
    • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ для SSR: Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ "", Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ window нСдоступСн.
    • ΠžΡ‡ΠΈΡΡ‚ΠΊΠ°: Π‘Π»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ popstate автоматичСски удаляСтся, ΠΊΠΎΠ³Π΄Π° отписываСтся послСдний подписчик.

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

    src/components/Sidebar.svelte
    <script lang="ts">
      import { usePathname } from "svelte-intlayer";
    
      const links = [
        { href: "/dashboard", label: "Π”Π°ΡˆΠ±ΠΎΡ€Π΄" },
        { href: "/settings", label: "Настройки" },
      ];
    
      const pathname = usePathname();
    </script>
    
    <nav>
      {#each links as link}
        <a
          href={link.href}
          style:font-weight={$pathname === link.href ? "bold" : "normal"}
        >
          {link.label}
        </a>
      {/each}
    </nav>
    

    БвязанныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ