File tree Expand file tree Collapse file tree 1 file changed +10
-13
lines changed
Expand file tree Collapse file tree 1 file changed +10
-13
lines changed Original file line number Diff line number Diff line change 11import * as React from 'react'
22
33const MOBILE_BREAKPOINT = 768
4+ const MOBILE_QUERY = `(max-width: ${ MOBILE_BREAKPOINT - 1 } px)`
45
56export function useIsMobile ( ) {
6- const [ isMobile , setIsMobile ] = React . useState < boolean | undefined > ( undefined )
7-
8- React . useEffect ( ( ) => {
9- const mql = window . matchMedia ( `(max-width: ${ MOBILE_BREAKPOINT - 1 } px)` )
10- const onChange = ( ) => {
11- setIsMobile ( window . innerWidth < MOBILE_BREAKPOINT )
12- }
13- mql . addEventListener ( 'change' , onChange )
14- setIsMobile ( window . innerWidth < MOBILE_BREAKPOINT )
15- return ( ) => mql . removeEventListener ( 'change' , onChange )
16- } , [ ] )
17-
18- return ! ! isMobile
7+ return React . useSyncExternalStore (
8+ ( callback ) => {
9+ const mql = window . matchMedia ( MOBILE_QUERY )
10+ mql . addEventListener ( 'change' , callback )
11+ return ( ) => mql . removeEventListener ( 'change' , callback )
12+ } ,
13+ ( ) => window . matchMedia ( MOBILE_QUERY ) . matches ,
14+ ( ) => false
15+ )
1916}
You can’t perform that action at this time.
0 commit comments