Autor:
    Creación:2026-06-22Última actualización:2026-06-22

    Integración con Solid: Documentación del Hook usePathname

    El hook usePathname devuelve el pathname del navegador actual eliminando el segmento de locale, en forma de Accessor<string> en Solid. Es útil para la navegación basada en locale — por ejemplo, determinar qué elemento de navegación está activo — sin tener que eliminar manualmente el prefijo de locale.

    Importando usePathname en Solid

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

    Descripción general

    usePathname crea una señal reactiva inicializada desde window.location.pathname, elimina el prefijo de locale a través de getPathWithoutLocale y actualiza la señal cada vez que el navegador dispara un evento popstate (navegación atrás/adelante). El listener del evento se limpia automáticamente a través de onCleanup.

    Uso

    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;
    

    Valor de retorno

    Tipo Descripción
    Accessor<string> Accessor de Solid (getter reactivo) que devuelve el pathname actual sin el prefijo del locale.

    Comportamiento

    • Eliminación del locale: Elimina el segmento inicial de locale (ej. /es/dashboard/dashboard).
    • Reactivo: Se actualiza automáticamente en los eventos popstate (navegación hacia atrás/adelante en el navegador).
    • Seguro para SSR: Devuelve "" cuando window no está disponible.
    • Limpieza (Cleanup): El listener popstate se elimina automáticamente mediante onCleanup de Solid.

    Ejemplo

    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: "Dashboard" },
      { href: "/settings", label: "Ajustes" },
    ];
    
    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;
    

    Relacionado