Объявите ваш метод внутри хука, а затем вызовите. Добавьте три строки с комментариями. Также currentUser
является зависимостью, потому что если пользователь изменится, вы проверите, вошел ли он в систему. Ваши ошибки были
1) - передача setCurrentUser
(она никогда не изменится, поскольку она является функцией / обработчиком) в зависимости.
2) - ни объявление метода, ни его вызов, вместо этого просто передача операторов в useEffect
, который запускается только один раз.
import { useState, useEffect, useContext } from "react";
import { UserContext } from "./UserContext";
import ApiHandler from "../ApiHandler/ApiHandler";
const api = new ApiHandler();
export const useAuth = () => {
const [isLoggedIn, setIsLoggedIn] = useState(false);
const userContext = useContext(UserContext);
const { currentUser, setCurrentUser } = userContext;
useEffect(() => {
function getStatus() { //method body starts
api.get("/is-loggedin")
.then(res => {
setCurrentUser(res.data.currentUser);
setIsLoggedIn(true);
})
.catch(err => {
setCurrentUser(null);
setIsLoggedIn(false);
});
}; //method body closed.
getStatus(); //this is the call
}, [currentUser]);
return { isLoggedIn, currentUser };
};