Answer the question
In order to leave comments, you need to log in
Are the dependencies in this useEffect correct?
1. useEffect that has login as a dependency, will it work when mounting a component that uses the useAuth hook?
2. Why login is specified in useEffect in dependencies, because useEffect will work when login changes, and it will change when the user logs in, why then also useEffect to call?
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 }
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question