因此,这更像是一个javascript问题,而不是一个reactjs问题.我正在reactjs中创建受保护的路由.在这里,我获取"/checkauth"get请求来判断身份验证,它会正确地将响应返回给我.然而,问题是,由于它是一个异步函数,返回该值需要时间,因此我的return语句执行得更早.
const [auth, setAuth] = useState();
const checkAuthentication = async ()=>{
const res = await fetch('/checkauth', {
method : "GET",
credentials: "include",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
}
});
const data = await res.json();
return res.status===200 ? (data.isAuthenticated) : (false) ;
}
useEffect(async ()=>{
const data = await checkAuthentication();
setAuth(data)
}, []);
return auth ? <Outlet /> : <Navigate to='/signin' />;
在这里,auth总是未定义的,因此它总是导航到签名.