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

    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

    TipoDescripció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