Comprobar si un elemento es visible con ganchos React (2023)

Comprobar si un elemento es visible con ganchos React (1)

Comprobar si un elemento es visible con ganchos React (2)

José Miguel Álvarez Vañó

Publicado en• Publicado originalmente enjmalvarez.dev

Comprobar si un elemento es visible con ganchos React (3) Comprobar si un elemento es visible con ganchos React (4) Comprobar si un elemento es visible con ganchos React (5) Comprobar si un elemento es visible con ganchos React (6) Comprobar si un elemento es visible con ganchos React (7)

Comprobar si un elemento está visible en la pantalla del usuario es muy fácil usando elAPI de observador de intersecciones. Esta API es compatible con todos los principales navegadores.

La API Intersection Observer nos permite detectar intersecciones de un elemento con otro elemento. En nuestro caso, vamos a observar las intercepciones entre un elemento React y la ventana gráfica del navegador.

Vamos a crear un enlace personalizado para que esto reutilice este código donde lo necesitemos.

En nuestro hook personalizado vamos a usaruseStatepara almacenar el estado de intersección del elemento.

exportar función useIsVisible() { constante [isIntersecting, conjuntoIntersección] = useState(FALSO); devolver isIntersecting;}

El gancho necesita una referencia al elemento React que queremos observar. vamos a usar elárbitroprop para pasar el elemento al gancho.

exportar función useIsVisible(árbitro) { constante [isIntersecting, conjuntoIntersección] = useState(FALSO); devolver isIntersecting;}

Finalmente, necesitamos crear una instancia deIntersecciónObservadory observe el elemento. ElIntersecciónObservadorEl constructor acepta una función de devolución de llamada como primer argumento que se llama cuando el elemento se cruza con la ventana gráfica.

vamos a usar elefecto de usogancho para hacer esto para evitar la creación de nuevos observadores en los renderizados.

exportar función useIsVisible(árbitro) { constante [isIntersecting, conjuntoIntersección] = useState(FALSO); efecto de uso(() => { constante observador = nuevo IntersecciónObservador(([entrada]) => conjuntoIntersección(entrada.isIntersecting) ); observador.observar(árbitro.actual); }, [árbitro]); devolver isIntersecting;}

Para mejorar el rendimiento, vamos a llamarIntersectionObserver.desconectar()para dejar de observar los cambios cuando se desmonta el componente o se pasa un nuevo elemento al gancho.

exportar función useIsVisible(árbitro) { constante [isIntersecting, conjuntoIntersección] = useState(FALSO); efecto de uso(() => { constante observador = nuevo IntersecciónObservador(([entrada]) => conjuntoIntersección(entrada.isIntersecting) ); observador.observar(árbitro.actual); devolver () => { observador.desconectar(); }; }, [árbitro]); devolver isIntersecting;}

Nuestro gancho está listo para ser utilizado. Para usarlo solo necesitamos llamarlo desde un componente de React y pasar una referencia al elemento que queremos comprobar si está visible o no.

exportar función micomponente() { constante árbitro = useRef(); constante es visible = useIsVisible(árbitro); devolver ( <división árbitro={árbitro}> <pag>{es visible ? "Visible" : "No visible"}pag> división> );}

Puedes ver un ejemplo de uso real de este gancho enMi sitio web. Estoy usando el enlace para detectar si el usuario se desplaza hasta la parte inferior de la página y luego carga los comentarios de una publicación de blog. Puede ver el código fuente del componente.aquí. Ingrese a cualquiera de las publicaciones del blog y desplácese hasta la parte inferior de la página para verlo en acción.

Referencias

Top Comentarios(8)

Suscribir

Comprobar si un elemento es visible con ganchos React (9)

yongchang él

Un desarrollador de IoT y blockchain; interesado en la computación en la nube; amo la codificación...

  • Correo electrónico

    yongchanghe8@gmail.com

  • Ubicación

    Saskatoon, Saskatchewan

  • Educación

    Informática, maestría, Universidad de Saskatchewan

  • Unido

¡Gracias por compartir!

Comprobar si un elemento es visible con ganchos React (11)

José Miguel Álvarez Vañó

Ingeniero de Software @ Shopify. +5 años de experiencia desarrollando software. Conocimientos Full-Stack con enfoque en desarrollo web.

  • Correo electrónico

    jm.alvarez.vano@gmail.com

  • Ubicación

    Valencia, España

  • Trabajar

    Ingeniero de software @ Shopify

  • Unido

    (Video) Animaciones en React con Intersection Observer y Custom Hook

¡Gracias por leerlo Yongchang!

Comprobar si un elemento es visible con ganchos React (13)

Helitha Rupasinghe

Desarrollador 💻 | Escritor técnico 📝 @ThePracticalDev @Medium @Teelfeed @Hashnode @LinkedIn | Abierto a colaborar 🔓 | Entusiasta de la IA 🤑 | Atrapado 🔥 Codificación | 3.7 Suscriptores de blogs

  • Educación

    Universidad de Hertfordshire

  • Trabajar

    Charlemos sobre los proyectos de tu marca: Contáctame 👉 provideByGatsby@outlook.com

  • Unido

¡Gran contenido!

Comprobar si un elemento es visible con ganchos React (15)

José Miguel Álvarez Vañó

Ingeniero de Software @ Shopify. +5 años de experiencia desarrollando software. Conocimientos Full-Stack con enfoque en desarrollo web.

  • Correo electrónico

    jm.alvarez.vano@gmail.com

  • Ubicación

    Valencia, España

  • Trabajar

    (Video) useRef explicado al detalle - Con 6 mini Apps - React - Scroll Animation Focus, Copy Paste y Más

    Ingeniero de software @ Shopify

  • Unido

¡Gracias Helita!

Comprobar si un elemento es visible con ganchos React (17)

Rudy Nape

Desarrollador freelance francés

  • Ubicación

    Francia

  • Trabajar

    Desarrollador líder en Niort

  • Unido

Muchas gracias !! ¿Qué hay del rendimiento?

Comprobar si un elemento es visible con ganchos React (19)

José Miguel Álvarez Vañó

Ingeniero de Software @ Shopify. +5 años de experiencia desarrollando software. Conocimientos Full-Stack con enfoque en desarrollo web.

  • Correo electrónico

    jm.alvarez.vano@gmail.com

  • Ubicación

    (Video) Trigger a Function when Scrolling to an Element in React with Intersection Observer

    Valencia, España

  • Trabajar

    Ingeniero de software @ Shopify

  • Unido

El rendimiento es bueno. La devolución de llamada que se pasa a la instancia de IntersectionObserver solo se llama cuando cambia el estado de la intersección (es decir, solo se llama cuando el componente se vuelve visible y cuando se vuelve invisible).

Comprobar si un elemento es visible con ganchos React (21)

Ionel Cristian Lupu

Autor de Typetron. Apasionado del desarrollo web. Aficionado a las mecanografiadas.

  • Unido

¿Qué pasa si el elemento ref se representa condicionalmente más tarde? Tu gancho personalizado no funcionará

Comprobar si un elemento es visible con ganchos React (23)

esto me ayuda mucho :) gracias!

(Video) Detecta cuando un elemento es visible con Intersection Observer y JavaScript
(Video) Curso React: 18. Hook useEffect ( 2/2 ) - jonmircha

Para otras acciones, puede considerar bloquear a esta persona y/oreportar abuso

Videos

1. Cómo NO mostrar algo en React
(Leigh en Español)
2. Infinite Scrolling With React - Tutorial
(Web Dev Simplified)
3. Lazy Load, Suspense y paginación con React
(midudev)
4. How to detect outside click in React | React JS
(Akash Ingole)
5. React - Ventanas Modal Re-utilizables
(FalconMasters)
6. Visibility y Display en CSS - Cómo ocultar elementos en CSS con Java Script
(RickDev)
Latest Posts
Article information

Author: The Hon. Margery Christiansen

Last Updated: 30/07/2023

Views: 5325

Rating: 5 / 5 (50 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: The Hon. Margery Christiansen

Birthday: 2000-07-07

Address: 5050 Breitenberg Knoll, New Robert, MI 45409

Phone: +2556892639372

Job: Investor Mining Engineer

Hobby: Sketching, Cosplaying, Glassblowing, Genealogy, Crocheting, Archery, Skateboarding

Introduction: My name is The Hon. Margery Christiansen, I am a bright, adorable, precious, inexpensive, gorgeous, comfortable, happy person who loves writing and wants to share my knowledge and understanding with you.