Автор:
    Дата створення:2026-06-22Останнє оновлення:2026-06-22

    Інтеграція Preact: Документація Хука usePathname

    Хук usePathname повертає поточний шлях браузера (pathname) з видаленим сегментом локалі. Він корисний для створення навігації, що залежить від локалі — наприклад, для визначення, який елемент навігації активний — без необхідності вручну видаляти префікс локалі.

    Імпорт usePathname у Preact

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

    Огляд

    usePathname читає window.location.pathname, видаляє префікс локалі за допомогою getPathWithoutLocale та викликає повторний рендеринг компонента кожного разу, коли браузер генерує подію popstate (навігація назад/вперед). Під час серверного рендерингу (SSR) повертає порожній рядок.

    Використання

    src/components/NavItem.tsx
    import type { FunctionComponent } from "preact";
    import { usePathname } from "preact-intlayer";
    
    type NavItemProps = {
      href: string;
      label: string;
    };
    
    const NavItem: FunctionComponent<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 Поточний шлях без префіксу локалі. Порожній рядок під час серверного рендерингу (SSR).

    Поведінка

    • Видалення локалі (Locale stripping): Видаляє початковий сегмент локалі (наприклад, /uk/dashboard/dashboard).
    • Реактивність: Автоматично оновлюється під час подій popstate (навігація браузера назад / вперед).
    • Безпека для SSR: Повертає "", коли об'єкт window недоступний.
    • Очищення (Cleanup): Слухач popstate автоматично видаляється при розмонтуванні (unmount) компонента.

    Приклад

    src/components/Sidebar.tsx
    import type { FunctionComponent } from "preact";
    import { usePathname } from "preact-intlayer";
    
    const links = [
      { href: "/dashboard", label: "Дашборд" },
      { href: "/settings", label: "Налаштування" },
    ];
    
    const Sidebar: FunctionComponent = () => {
      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;
    

    Пов'язане

    • useLocale — поточна локаль + перемикач локалі
    • getPathWithoutLocale — базова утиліта, що використовується цим хуком