raddix

useScrollSpy

Actualice automáticamente la navegación en función de la posición de desplazamiento.

Instalación

Instale el custom hook desde su terminal.

npm i @raddix/use-scroll-spy

Uso

import { useScrollSpy } from '@raddix/use-scroll-spy';
export default function TableOfContent() {
const headings = [
{id: 'overview', text: 'Overview'},
{id: 'components', text: 'Creating and nesting components'},
{id: 'styles', text: 'Adding styles'},
]
const headingIds = headings.map(({id}) => id)
const activeId = useScrollSpy(headingIds, {
rootMargin: "0% 0% -80% 0%",
});
return (
<ul>
{headings.map((heading, i) => (
<li
key={i}
style={
activeId === heading.id ? { color: 'blue' } : { color: '#000' }
}
>
<a href={`#${heading.id}`}>{heading.text}</a>
</li>
))}
</ul>
);
};

API

Detrás de cámaras, el hook utiliza el Intersection Observer Web API, así que puedes obtener los mejores estándares de rendimiento mientras no te tienes que preocupar por implementarlo tú mismo.

Resultado

NombreDescripciónTipo
activeIdDevuelve el id del elemento de la navegación que está activo.

Parametros

El hook useScrollSpy acepta un objeto con propiedades del Intersection Observer API.

NombreDescripciónRequeridoTipo
rootEl elemento que se utiliza como ventana gráfica para comprobar la visibilidad del objetivo.No
rootMarginMargen alrededor de la raíz. Puede tener valores similares a la margin propiedad CSS.No
thresholdYa sea un solo número o una serie de números que indican en qué porcentaje de la visibilidad del objetivo se debe ejecutar la devolución de llamada del observador.No