Skip to content

Commit 6818e09

Browse files
committed
l2 use hooks
1 parent 862a2a0 commit 6818e09

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed

frontend/src/components/layout/AuthLayout.tsx

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
import React, { useState, useEffect, useCallback, ReactChild } from 'react'
1+
import React, {
2+
useState,
3+
useEffect,
4+
useCallback,
5+
ReactChild,
6+
useRef,
7+
} from 'react'
28
import { makeStyles, Theme } from '@material-ui/core/styles'
39
import clsx from 'clsx'
410

@@ -45,23 +51,40 @@ const AuthLayout: React.FC<Props> = ({ children }) => {
4551
const [state, setState] = useState(initialState)
4652
const classes = useStyles({})
4753
console.log('AuthLayout')
54+
const checkIsMobile = useCallback(
55+
() => (window.innerWidth < 600 ? true : false),
56+
[],
57+
)
58+
4859
const resize = useCallback(() => {
49-
setState({
50-
...state,
60+
setState((currentState) => ({
61+
...currentState,
5162
isMobile: checkIsMobile(),
5263
isDrawerOpen: checkIsMobile() ? false : true,
53-
})
54-
}, [state])
64+
}))
65+
}, [checkIsMobile])
5566

67+
const initialResizeCalled = useRef(false)
5668
useEffect(() => {
5769
window.addEventListener('resize', resize)
58-
resize()
70+
if (!initialResizeCalled.current) {
71+
resize()
72+
initialResizeCalled.current = true
73+
}
74+
return () => {
75+
window.removeEventListener('resize', resize)
76+
}
5977
}, [resize])
6078

61-
const checkIsMobile = () => (window.innerWidth < 600 ? true : false)
62-
63-
const handleDrawerClose = () => setState({ ...state, isDrawerOpen: false })
64-
const handleDrawerOpen = () => setState({ ...state, isDrawerOpen: true })
79+
const handleDrawerClose = useCallback(
80+
() =>
81+
setState((currentState) => ({ ...currentState, isDrawerOpen: false })),
82+
[],
83+
)
84+
const handleDrawerOpen = useCallback(
85+
() => setState((currentState) => ({ ...currentState, isDrawerOpen: true })),
86+
[],
87+
)
6588

6689
return (
6790
<React.Fragment>

0 commit comments

Comments
 (0)