Sometimes, we want to update the style of a component on scroll with React.
In this article, we’ll look at how to update the style of a component on scroll with React.
Update the Style of a Component on Scroll in React
We can add a scroll event listener into the useEffect
hook callback to listen for the scroll event.
For instance, we can write:
import React, { useEffect, useState } from "react";
export default function App() {
const [offset, setOffset] = useState(0);
useEffect(() => {
window.onscroll = () => {
setOffset(window.pageYOffset);
};
}, []);
console.log(offset);
return (
<div>
{Array(100)
.fill()
.map((_, i) => (
<p>{i}</p>
))}
</div>
);
}
We have the offset
state which we create with the useState
hook.
Then we call the useEffect
hook with a callback that sets the window.onscroll
property to a function that calls setOffset
to set the offset
to the scroll position.
window.pageYOffset
has the vertical scroll position of the browser window.
We then log the offset
with console log.
And we render some content that requires scrolling to view in the return
statement.
Now when we scroll up or down, we see offset
logged from the console log.
Conclusion
We can add a scroll event listener into the useEffect
hook callback to listen for the scroll event.