Skip to content

useMediaQuery ​

Hook to handle CSS mediaQuery. It returns an object with matches and media properties and receives an optional onChange function to handle MediaQueryListEvent change event.

Demo ​

INFO

The component uses useMediaQuery hook to detect color-scheme and displays result.

Loading demo…
Show source code
tsx
import { useMediaQuery } from "../../../.."

export const UseMediaQuery = () => {
	const mediaQuery = useMediaQuery('(prefers-color-scheme: dark)');

	return <div style={{textAlign: "left"}}>
		<p>
			Color-scheme: {mediaQuery.matches ? "dark" : "light"}
		</p>
		<p>
			Media matched: {mediaQuery.media}
		</p>
	</div>
}

Types ​

UseMediaQueryProps ​

Props accepted by useMediaQuery.

PropertyTypeRequiredDescription
mediaQuerystring✓media query to test.
onChange(evt: MediaQueryListEvent) => voidMediaQueryListEvent change handler.

UseMediaQueryResult ​

Result object returned by useMediaQuery.

PropertyTypeRequiredDescription
matchesboolean✓true when the CSS media query currently matches; false otherwise. Re-evaluated whenever the match state changes (component re-renders).
mediastring✓The serialised form of the evaluated media query string (e.g. "(max-width: 768px)"), as reported by MediaQueryList.media.

Released under the MIT License.