Sometimes, we want to implement media queries with React.
In this article, we’ll look at how to implement media queries with React.
How to implement media queries with React?
To implement media queries with React, we create our own hook.
For instance, we write
const useMediaQuery = (query) => {
const [matches, setMatches] = useState(false);
useEffect(() => {
const media = window.matchMedia(query);
if (media.matches !== matches) {
setMatches(media.matches);
}
const listener = () => setMatches(media.matches);
window.addEventListener("resize", listener);
return () => window.removeEventListener("resize", listener);
}, [matches, query]);
return matches;
};
export default useMediaQuery;
to create the useMediaQuery hook.
In it we check if the media query matches the screen size with window.matchMedia.
Then we call setMatches if media.matches is different from matches.
We then call addEventListener to listen to the resize event with listener.
And we call removeEventListener if matches or query changes.
Then we call useMediaQuery in our component to see if our screen matches the media query string.
Conclusion
To implement media queries with React, we create our own hook.