Information
media-query-react
is package for React to handle media query for the responsive design.
Hooks supported Easiest module to render componenets with media query.
Installation
$npm install --save media-query-react
Import
import MediaQueryReact ForDevice useMediaQuery from 'media-query-react';
Example
With Components
Wrap application with MediaQueryReact HOC
import React from 'react';import MediaQueryReact from 'media-query-react'; // Entry point { // pass screenSize object with custom device name and width. const screenSize = mobile: // custom device name minWidth: 320 maxWidth: 480 mobileLandscape: minWidth: 481 maxWidth: 767 tablet: minWidth: 768 maxWidth: 1024 desktop: minWidth: 1025 maxWidth: 2500 ; return <CtxApp> /* Wrap application with MediaQueryReact HOC and pass prop mediaQuaries */ <MediaQueryReact => <Routes /> </MediaQueryReact> </CtxApp> ;} moduleApp;
use ForDevice to wrap your component which need to be responsive design and to pass your customize device name from screenSize object.
import React from 'react';import ForDevice from 'media-query-react'; { return <Div> /* Pass custom device name as an array for multiple devices */ <ForDevice => <Header /> /* <Header /> component will display only on tablet and desktop */ </ForDevice> /* Pass custom device name as an string for single device */ <ForDevice ="mobile"> <Sidebar /> /* <Sidebar /> component will display only on mobile */ </ForDevice> children </Div> ;} HeroSideBarHeaderpropTypes = children: PropTypesisRequired; HeroSideBarHeader;
With Hooks
With hooks for now support two css property *max-width *min-width
More css property will come in future update.
import React useEffect useState from 'react';import useMediaQuery from 'media-query-react'; { const isDesktop = ; const isTablet = ; return <Div => <ListUl> isDesktop && <ListLi ="contactButtonContainer"> <a ="mailto:itsmohitsaxenahere@gmail.com"> <Span> Contact </Span> </a> </ListLi> isTablet && <ListLi><NavLink ="/about">About</NavLink></ListLi> <ListLi><NavLink ="/about">Work</NavLink></ListLi> </ListUl> </Div> ;} ;
API
In screenSize object numbers given as shorthand will be expanded to px (768
will become '768px'
).
With hooks possible CSS properties
Css property | value |
---|---|
max-width | 1224px |
min-width | 1024px |
More properties will add in future release.
PROPS
prop | description | type |
---|---|---|
mediaQueries | custom screen size and deivce name | object |
deviceName | Pass screen name to render component | Array or String |
LICENSE
MIT