React
React 리액트 반응형 디자인 | useMediaQuery
TASTY.K
2023. 4. 1. 03:11
반응형
리액트에서는 브라우저의 화면 폭에 따라 반응하는 CSS의 미디어 쿼리( @media )도 사용 가능하지만 "디바이스" 자체의 화면폭을 확인해서 true/false를 반환해주는 useMediaQuery 라는 리액트 전용 훅(Hook)도 사용할 수 있다.
- 단, 디바이스 폭 기준이라, 창을 늘리거나 줄여도 반응하진 않는다.
- 다만, 모바일이냐 아니냐와 같은 디바이스 자체를 가늠하려는 경우 사용하는 것이 바람직해보인다.
- useMediaQuery를 사용하려면 react-responsive 부터 설치해야 한다.
1. cmd 창에서 react-responsive 설치
npm install react-responsive
2. 리액트에서 import
import { useMediaQuery } from 'react-responsive';
import React from 'react';
3. 변수 세팅
function App() {
const isDesktopOrLaptop = useMediaQuery({ query: "(min-width: 1224px)" });
const isBigScreen = useMediaQuery({ query: "(min-width: 1824px)" });
const isTabletOrMobile = useMediaQuery({ query: "(max-width: 1224px)" });
const isPortrait = useMediaQuery({ query: "(orientation: portrait)" });
const isRetina = useMediaQuery({ query: "(min-resolution: 2dppx)" });
return (...);
}
4. 사용
function App() {
const isDesktopOrLaptop = useMediaQuery({ query: "(min-width: 1224px)" });
const isBigScreen = useMediaQuery({ query: "(min-width: 1824px)" });
const isTabletOrMobile = useMediaQuery({ query: "(max-width: 1224px)" });
const isPortrait = useMediaQuery({ query: "(orientation: portrait)" });
const isRetina = useMediaQuery({ query: "(min-resolution: 2dppx)" });
return (
<div>
<h1>Device Test!</h1>
{isDesktopOrLaptop && <p>You are a desktop or laptop</p>}
{isBigScreen && <p>You have a huge screen</p>}
{isTabletOrMobile && <p>You are a tablet or mobile phone</p>}
<p>Your are in {isPortrait ? "portrait" : "landscape"} orientation</p>
{isRetina && <p>You are retina</p>}
</div>
);
}
5. 결과

코드 전체
import useMediaQuery from "react-responsive";
import "./App.css";
function App() {
const isDesktopOrLaptop = useMediaQuery({ query: "(min-width: 1224px)" });
const isBigScreen = useMediaQuery({ query: "(min-width: 1824px)" });
const isTabletOrMobile = useMediaQuery({ query: "(max-width: 1224px)" });
const isPortrait = useMediaQuery({ query: "(orientation: portrait)" });
const isRetina = useMediaQuery({ query: "(min-resolution: 2dppx)" });
return (
<div>
<h1>Device Test!</h1>
{isDesktopOrLaptop && <p>You are a desktop or laptop</p>}
{isBigScreen && <p>You have a huge screen</p>}
{isTabletOrMobile && <p>You are a tablet or mobile phone</p>}
<p>Your are in {isPortrait ? "portrait" : "landscape"} orientation</p>
{isRetina && <p>You are retina</p>}
</div>
);
}
export default App;
기본 튜토리얼 참고
https://www.npmjs.com/package/react-responsive
react-responsive
Media queries in react for responsive design. Latest version: 9.0.2, last published: 4 months ago. Start using react-responsive in your project by running `npm i react-responsive`. There are 1090 other projects in the npm registry using react-responsive.
www.npmjs.com
반응형