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

    Інтеграція з Solid: Документація хука usePathname

    Хук usePathname повертає поточний шлях (pathname) браузера із видаленим сегментом локалі, у вигляді Accessor<string> для Solid. Це корисно для навігації з урахуванням локалі — наприклад, для визначення активного пункту меню — без необхідності вручну видаляти префікс локалі.

    Імпорт usePathname в Solid

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

    Огляд

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

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

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

    Значення, що повертається

    Тип Опис
    Accessor<string> Accessor для Solid (реактивний геттер), що повертає поточний шлях (pathname) без префікса локалі.

    Поведінка

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

    Приклад

    src/components/Sidebar.tsx
    import type { Component } from "solid-js";
    import { For } from "solid-js";
    import { usePathname } from "solid-intlayer";
    
    const links = [
      { href: "/dashboard", label: "Дашборд" },
      { href: "/settings", label: "Налаштування" },
    ];
    
    const Sidebar: Component = () => {
      const pathname = usePathname();
    
      return (
        <nav>
          <For each={links}>
            {({ href, label }) => (
              <a
                href={href}
                style={{ "font-weight": pathname() === href ? "bold" : "normal" }}
              >
                {label}
              </a>
            )}
          </For>
        </nav>
      );
    };
    
    export default Sidebar;
    

    Пов'язані хуки

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