DEV Community

Nadeem Khan
Nadeem Khan

Posted on

12 2

Detect Scroll Direction ReactJS

In these blog. I am detecting scroll direction either person id scrolling down or up. To use these concept you can make some better thing like Navbar. Render a Navbar when we scroll untill that it gets disappear. So I am explaining here only about scroll direction If you want the example then please let me know.



import React, {useEffect, useState, useCallback} from 'react';
import { Fragment } from 'react/cjs/react.production.min';
import styles from "./App.module.css";

const App = () => {
const [y,
setY] = useState(document.scrollingElement.scrollHeight);
const [scrollDirection,
setScrollDirection] = useState("you have not scrolled yet");

const handleNavigation = useCallback((e) => {

if (y > window.scrollY) {
  setScrollDirection("Scrolling Up");
  console.log("scrolling up");
} else if (y < window.scrollY) {
  setScrollDirection("Scrolling Down");
  console.log("scrolling down");
}
setY(window.scrollY)
Enter fullscreen mode Exit fullscreen mode

}, [y]);

useEffect(() => {

window.addEventListener("scroll", handleNavigation);

return () => {
  window.removeEventListener("scroll", handleNavigation);
};
Enter fullscreen mode Exit fullscreen mode

}, [handleNavigation]);

return (
<Fragment>
<div className={styles.main_container}>

&lt;/div&gt;
  &lt;div&gt;{scrollDirection}&lt;/div&gt;
&lt;/Fragment&gt;
Enter fullscreen mode Exit fullscreen mode

)
}

export default App

Enter fullscreen mode Exit fullscreen mode




OutPut Result

Result

Heroku

Deploy with ease. Manage efficiently. Scale faster.

Leave the infrastructure headaches to us, while you focus on pushing boundaries, realizing your vision, and making a lasting impression on your users.

Get Started

Top comments (2)

Collapse
 
jontatan25 profile image
jontatan25

Simple and effective solution, With this post I was able to implement an advanced animation that needed to be implemented just when the user is scrolling down.

Collapse
 
nadeemkhanrtm profile image
Nadeem Khan

thank you i came in handy.