Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

182
Vistas
El componente importado de React no funciona completamente

Soy realmente nuevo en React y he estado intentando durante algún tiempo hacer una función de desplazamiento hacia arriba. Utilizando los tutoriales existentes y todo lo que hay en Google, he creado este componente:

 Import React, { useState, useEffect } from "react"; export default function ScrollToTop() { const [isVisible, setIsVisible] = useState(false) const toggleVisibility = () => { if(window.pageYOffset > 300) { setIsVisible(true); } else { setIsVisible(false); } }; const ScrollToTop = () => { window.scrollTo({ top: 0, behavior: "smooth", }); }; useEffect(() => { window.addEventListener('scroll', toggleVisibility); return () => { window.removeEventListener('scroll', toggleVisibility); }; }, []); if (!isVisible) { return false } return ( <button className="button" onClick={ScrollToTop}> <div className="button__arrow button__arrow--up"></div> </button> ) };

el problema es que cuando lo importo en App.js no funciona correctamente, la parte de desplazamiento funciona perfectamente, pero el botón permanece en la parte inferior de la página en lugar de aparecer después de una cierta cantidad de desplazamiento. Esta es la aplicación.js:

 return ( <div> {loading ? ( <h1>Loading...</h1> ) : ( <> <Navbar /> <div className="Grid-container"> {pokemonData.map((pokemon, i) => { return <Card key={i} pokemon={pokemon} />; })} </div> <ScrollToTop/> </> )} </div> ); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No veo ningún problema evidente en su implementación de ScrollTop que pudiera causar que el botón de desplazamiento hacia arriba permanezca en la página incluso después de desplazarse hacia arriba, pero sí veo espacio para la optimización.

  1. Para eventos onScroll , es mejor usar oyentes pasivos.
  2. Invoque toggleVisibility una vez inmediatamente en el montaje useEffect para garantizar un estado inicial adecuado.
  3. Aplique Boolean Zen al conmutador de visibilidad; Actualice el estado isVisible con el resultado de la comparación booleana.
  4. Simplemente represente condicionalmente el botón en un solo retorno.

Código:

 function ScrollToTop() { const [isVisible, setIsVisible] = useState(false); const toggleVisibility = () => { setIsVisible(window.pageYOffset > 300); }; const ScrollToTop = () => { window.scrollTo({ top: 0, behavior: "smooth" }); }; useEffect(() => { toggleVisibility(); window.addEventListener("scroll", toggleVisibility, { passive: true }); return () => { window.removeEventListener("scroll", toggleVisibility, { passive: true }); }; }, []); return isVisible ? ( <button className="button" onClick={ScrollToTop}> <div className="button__arrow button__arrow--up">TOP</div> </button> ) : null; }

Editar reaccionar-componente-importado-no-funciona-completamente

Si aún tiene problemas con su implementación y uso, intente crear un código y un cuadro que reproduzca el problema que podemos inspeccionar y depurar en vivo.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda