Community Plugin
View plugin on GitHubgatsby-plugin-breakpoints
Gatsby plugin providing breakpoints using React Hooks
Install
npm i gatsby-plugin-breakpoints
or
yarn add gatsby-plugin-breakpoints
Include the plugin in your gatsby-config.js
file :
/* gatsby-config.js */
module.exports = {
plugins: ['gatsby-plugin-breakpoints'],
};
Usage
Functional Components
Import the useBreakpoint
hook anywhere in your app.
This hook provides four default breakpoints as boolean :
name | breakpoints |
---|---|
xs | max-width: 320px |
sm | max-width: 720px |
md | max-width: 1024px |
l | max-width: 1536px |
/* yourFunctionalComponentOrPage.js */
import { useBreakpoint } from 'gatsby-plugin-breakpoints';
import MobileOnlyComponent from './your/component/path';
// ...
const MyComponent = () => {
const breakpoints = useBreakpoint();
return (
<AnyComponent>
{/* Anything */}
{/* <MobileOnlyComponent /> will only be displayed if max-width <= 320px */}
{breakpoints.xs ? <MobileOnlyComponent /> : null}
</AnyComponent>
);
};
export default MyComponent;
Class Components
Import the withBreakpoints
Higher Order Component anywhere in your app.
This HOC adds a breakpoints
props to your component, providing four default breakpoints as boolean :
name | breakpoints |
---|---|
xs | max-width: 320px |
sm | max-width: 720px |
md | max-width: 1024px |
l | max-width: 1536px |
/* yourClassComponent.js */
import { withBreakpoints } from 'gatsby-plugin-breakpoints';
import MobileOnlyComponent from './your/component/path';
// ...
class Test extends React.Component {
render() {
const { breakpoints } = this.props;
{
/* <MobileOnlyComponent /> will only be displayed if max-width <= 320px */
}
return breakpoints.xs ? (
<MobileOnlyComponent />
) : (
<div>Content hidden only on mobile</div>
);
}
}
export default withBreakpoints(Test);
Options
You can set your own queries like this :
// in gatsby-config.js
const myCustomQueries = {
xs: '(max-width: 320px)',
sm: '(max-width: 720px)',
md: '(max-width: 1024px)',
l: '(max-width: 1536px)',
xl: ...,
portrait: '(orientation: portrait)',
};
module.exports = {
plugins: [
{
resolve: "gatsby-plugin-breakpoints",
options: {
queries: myCustomQueries,
},
},
],
}
Default values
const defaultQueries = {
xs: '(max-width: 320px)',
sm: '(max-width: 720px)',
md: '(max-width: 1024px)',
l: '(max-width: 1536px)',
};
Note (only for test)
If you need to import <BreakpointProvider />
for testing you can do it like so :
import { BreakpointProvider } from 'gatsby-plugin-breakpoints';
In case you need full context, you can import it too :
import { BreakpointContext } from 'gatsby-plugin-breakpoints';
Contributing
Contributions are welcome ! See contributing guidelines
License
MIT
Copyright (c) 2019 Jimmy Beldone