useMedia - initialize state with call to media query

Initializing state with result from call to window.matchMedia avoids possible initial flicker of returned value, when media query matched initially
This commit is contained in:
Matt Leonowicz 2019-07-11 15:19:17 +02:00 committed by GitHub
parent c4f5f16120
commit eeb55e4927
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,7 @@
import { useEffect, useState } from 'react';
const useMedia = (query: string, defaultState: boolean = false) => {
const [state, setState] = useState(defaultState);
const useMedia = (query: string) => {
const [state, setState] = useState(() => window.matchMedia(query).matches);
useEffect(() => {
let mounted = true;