【发布时间】:2023-04-09 12:14:01
【问题描述】:
我正在尝试在 react 中设置经过身份验证的路由,并在用户通过身份验证后将 useState 挂钩更改为 true。当我从我的服务器获取用户数据时,我可以更新当前用户信息,但用于我的身份验证的 useState 挂钩不会从 true 更改为 false,反之亦然。
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(() => {
api
.get("/is-loggedin")
.then(res => {
setCurrentUser(res.data.currentUser);
setIsLoggedIn(true);
})
.catch(err => {
setCurrentUser(null);
setIsLoggedIn(false);
});
}, [setCurrentUser]);
return { isLoggedIn, currentUser };
};
【问题讨论】:
-
请,寻求调试或代码帮助的问题必须包含minimal reproducible example 或至少在问题本身中显示问题的代码(不是图像),请参阅How to Ask
-
您能否将实际代码粘贴到您的问题中?该图像难以搜索和理解。
-
最好看看你的
userContext代码,因为很多事情都取决于它。
标签: javascript reactjs react-hooks