npm install react-render-at
Device |
Min |
Max |
Desktop |
1200px |
Infinite |
Laptop |
1024px |
1199px |
Tablet |
768px |
1023px |
Mobile |
0px |
767px |
This package can be used in three different ways:
import React from 'react'
import {RenderAt} from 'react-render-at'
function App () {
return (
<RenderAt desktop>
Content
</RenderAt>
)
}
Prop |
Type |
Default |
desktop |
boolean |
no |
laptop |
boolean |
no |
tablet |
boolean |
no |
mobile |
boolean |
no |
fragment |
boolean |
no |
- Via Higher Order Component
import React from 'react'
import {withReanderAt} from 'react-render-at'
function App(props) {
return (
{
props.isDesktop && <p>Content in Desktop</p>
}
{
props.isLaptop && <p>Content in Laptop</p>
}
{
props.isTablet && <p>Content in Tablet</p>
}
{
props.isMobile && <p>Content in Mobile</p>
}
)
}
export default withRenderAt(App)
Prop |
Type |
isDesktop |
boolean |
isLaptop |
boolean |
isTablet |
boolean |
isMobile |
boolean |
You have to wrap your app within RenderAtProvider
and then:
import React from 'react'
import {useRenderAt} from 'react-render-at'
function App() {
const { isDesktop, isLaptop, isTablet, isMobile } = useRenderAt()
return (
{
isDesktop && <p>Content in Desktop</p>
}
{
isLaptop && <p>Content in Laptop</p>
}
{
isTablet && <p>Content in Tablet</p>
}
{
isMobile && <p>Content in Mobile</p>
}
)
}
export default App
Prop |
Type |
isDesktop |
boolean |
isLaptop |
boolean |
isTablet |
boolean |
isMobile |
boolean |
You can change the default debounce time by calling setDebounceTime
at the beginning of your app:
import React from 'react'
import RenderAt from 'react-render-at'
RenderAt.setDebounceTime(250) // Resize event debounce time in milliseconds.
You can override the default breakpoints by calling setBreakpoints
at the beginning of you app:
import React from 'react'
import RenderAt from 'react-render-at'
RenderAt.setBreakpoints({
desktop: {minWidth: 1024, maxWidth: Infinity}
})
Prop |
Type |
desktop |
{ minWidth: number, maxWidth: number | Infinity } |
laptop |
{ minWidth: number, maxWidth: number | Infinity } |
tablet |
{ minWidth: number, maxWidth: number | Infinity } |
mobile |
{ minWidth: number, maxWidth: number | Infinity } |