I am using react to create my project. The issue I am having is if I scroll to any page and then to go another page I end up in the same place on the top of the page. How can I fix this issue?
-
does it solve your problem? https://stackoverflow.com/questions/33188994/scroll-to-the-top-of-the-page-after-render-in-react-js – Georgy Jan 12 '22 at 12:22
-
please read how to ask questions on stackoverflow and edit it accordingly. – Shoyeb Memon Jan 12 '22 at 12:24
2 Answers
you can use Window.scrollTo
or element.scrollIntoView
function to resolve the problem
useEffect(() => {
window.scrollTo(0, 0);
}, []);
or if you want scroll behavior
window.scrollTo({
top: 0,
left: 0,
behavior: 'smooth'
});
but this is not the best way to do it in every component so you can use custom hooks to implement and use it everywhere
import react, { useEffect } from "react";
const useTop = function () {
useEffect(() => {
window.scrollTo(0, 0);
}, []);
};
export default useTop;
let's figure it out of the element.scrollIntoView
function and the use case
if we need to scroll to an element but we don't know the height and width of the element from the viewport so that's why we just use element.scrollIntoView function to resolve that.
we can manually calculate the height and width of the element from the viewport using the element.getBoundingClientReact
function but we need a lot of boilerplate code needed to implement
with the use of custom, hooks can use scroll events whenever we needed
const useTop = function () {
const scroll = (ref) => {
ref.current.scrollIntoView({ behaviour: "smooth" });
};
return { scroll };
};
export default useTop;

- 488
- 5
- 11
Try this:
componentDidMount() {
window.scrollTo(0, 0)
}
useEffect(() => {
window.scrollTo(0, 0)
}, [])

- 47
- 10