Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
react-hook-media
Advanced tools
A lightweight and tree-shakable library for working with media queries in React applications, providing responsive behavior and conditional rendering based on media query conditions.
React Hook Media is a lightweight and tree-shakable library that provides tools for working with media queries in React applications. It allows you to easily incorporate responsive behavior and conditional rendering based on media query conditions.
The library also provides a server-side rendering (SSR) and testing compatibility feature through the configureNodeEnv method. It allows you to configure the Node environment to simulate different media query results during server-side rendering or testing scenarios.
React Hook Media is simple to use and integrates seamlessly with React applications, providing a convenient way to handle media queries and create responsive UI components.
using npm:
npm install --save react-hook-media
or yarn:
yarn add react-hook-media
or pnpm:
pnpm add react-hook-media
import {
useMatchMedia,
configureNodeEnv,
MatchMedia,
MatchMediaHydrationProvider,
} from "react-hook-media";
const MyComponent = () => {
const isDesktop = useMatchMedia("(min-width: 900px)");
return (
<div>
{isDesktop ? "desktop" : "mobile"}
<MatchMedia query="(width < 900px)" otherwise={"desktop"}>
mobile
</MatchMedia>
</div>
);
};
// code bellow is for server-side rendering, ignore it if you don't use it
const Page = ({ mediaHydrationCtx }) => (
<MatchMediaHydrationProvider value={mediaHydrationCtx}>
<MyComponent />
</MatchMediaHydrationProvider>
);
export const getServerSideProps = async () => {
return {
props: {
mediaHydrationCtx: configureNodeEnv({ width: 1000 }),
},
};
};
const useMatchMedia: (mediaQuery: string) => boolean;
Custom hook that provides the functionality of the matchMedia method as a React hook.
In a Node environment, where media queries are not supported, you must use the configureNodeEnv method to simulate different device conditions, like in example.
Returns true
if the media query matches, false
otherwise.
type MatchMediaProps = PropsWithChildren<{
/**
* The media query to evaluate.
*/
query: string;
/**
* The content to render if the media query does not match (optional).
*/
otherwise?: ReactNode;
}>;
const MatchMedia: FC<MatchMediaProps>;
Evaluates the provided media query and renders its children
if the media query matches. Optionally, you can also provide an otherwise
prop to specify the content to render if the media query does not match.
It uses the useMatchMedia hook under the hood
const configureNodeEnv: (
config: MediaQueryEnvironmentConfig
) => MatchMediaHydrationContext;
Configures the Node environment for server-side rendering (SSR) or testing scenarios.
This function is used to set up the environment for the useMatchMedia hook when running React components on the server or in testing environments. It allows you to provide a custom configuration object to simulate different media query results.
The configuration object should contain properties that match the media query conditions you want to simulate. For example, if you configure it with { width: 768 }
, it will simulate the viewport width as if it were 768 pixels wide, affecting the results returned by useMatchMedia when evaluating media queries related to width.
Returns a MatchMediaHydrationContext
object that should be passed to the MatchMediaHydrationProvider.
type MatchMediaHydrationContext = Record<string, boolean>;
const MatchMediaHydrationProvider: Provider<MatchMediaHydrationContext>;
A React context provider component for hydrating match media values.
MIT © Krombik
FAQs
A lightweight and tree-shakable library for working with media queries in React applications, providing responsive behavior and conditional rendering based on media query conditions.
The npm package react-hook-media receives a total of 2 weekly downloads. As such, react-hook-media popularity was classified as not popular.
We found that react-hook-media demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.