Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

276
Visualizações
Desplácese hacia arriba en el botón Atrás del navegador, haga clic en reaccionar

Necesito desplazarme hacia arriba cada vez que la URL cambia en mi proyecto (y en la recarga de la página).

Todo funciona, pero tengo un problema con el botón Atrás del navegador. Incluso si el nombre de la ruta cambia, la página no se desplaza hacia arriba como debería, funciona en todos los demás casos (recarga de página y navegación de enlace regular).

Traté de contrarrestar eso creando un enlace personalizado solo para el botón Atrás, pero no se comporta como quiero. También probé un montón de otras cosas, pero nada parece funcionar en cuanto al botón Atrás del navegador.

 import { useEffect, useState } from "react"; import { useLocation } from "react-router-dom"; const ScrollToTop = () => { const { pathname } = useLocation(); const useBackButton = () => { const [isBack, setIsBack] = useState(false); const handleEvent = () => { setIsBack(true); }; useEffect(() => { window.addEventListener("popstate", handleEvent); return () => window.removeEventListener("popstate", handleEvent); }); return isBack; }; const backButton = useBackButton(); console.log(backButton); useEffect(() => { window.scrollTo(0, 0); }, [pathname, backButton]); useEffect(() => { window.onbeforeunload = () => { window.scrollTo(0, 0); }; }, []); return null; }; export default ScrollToTop;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No creo que el evento beforeunload sea necesario aquí, pero lo incluiré de todos modos. En lugar de usar un detector de eventos para el evento "popstate", puede usar el gancho useNavigationType para verificar expresamente un tipo de evento POP.

Nota : use window.addEventListener para el evento beforeunload para no contaminar/mutar el objeto de la window .

Ejemplo:

 import { NavigationType, useLocation, useNavigationType } from "react-router-dom"; const useBackButton = () => { const navType = useNavigationType(); return navType === NavigationType.Pop; }; const useScrollToTop = () => { const { pathname } = useLocation(); const isPop = useBackButton(); const scrollToTop = () => window.scrollTo(0, 0); useEffect(() => { scrollToTop(); }, [pathname, isPop]); useEffect(() => { window.addEventListener("beforeunload", scrollToTop); return () => { window.removeEventListener("beforeunload", scrollToTop); }; }, []); };

Uso:

 function App() { useScrollToTop(); return ( ... ); }

Editar desplazamiento hacia arriba en el navegador-botón-atrás-clic-reaccionar

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda