1. useEffect у которого в зависимостях находится login , сработает ли он при монтировании компонента в котором используется хук useAuth?
2. Для чего в useEffect'e в зависимостях указан login , ведь useEffect сработает когда изменится login, а изменится он при залогировании пользователя, зачем же тогда еще и useEffect вызывать ?
const storageName = 'userData'
export const useAuth = () => {
const [token, setToken] = useState(null)
const [ready, setReady] = useState(false)
const [userId, setUserId] = useState(null)
const login = useCallback((jwtToken, id) => {
setToken(jwtToken)
setUserId(id)
localStorage.setItem(storageName, JSON.stringify({
userId: id, token: jwtToken
}))
}, [])
const logout = useCallback(() => {
setToken(null)
setUserId(null)
localStorage.removeItem(storageName)
}, [])
useEffect(() => {
const data = JSON.parse(localStorage.getItem(storageName))
if (data && data.token) {
login(data.token, data.userId)
}
setReady(true)
}, [login])
return { login, logout, token, userId, ready }
}