【发布时间】:2020-12-07 10:02:51
【问题描述】:
我想在我的 AuthContext 中检查用户是否被授权
import React, {createContext,useState,useEffect} from 'react';
import AuthService from '../Services/AuthService';
export const AuthContext = createContext();
export default ({ children })=>{
const [user,setUser] = useState(null);
const [isAuthenticated,setIsAuthenticated] = useState(false);
const [isLoaded,setIsLoaded] = useState(false);
useEffect(()=>{
AuthService.isAuthenticated()
.then(data =>{
setUser(data.user);
setIsAuthenticated(data.isAuthenticated);
setIsLoaded(true);
})
},[]);
return (
<div>
{!isLoaded ? <h1>Loading</h1> :
<AuthContext.Provider value={{user,setUser,isAuthenticated,setIsAuthenticated}}>
{ children }
</AuthContext.Provider>}
</div>
)
}
在身份验证服务中我得到了这个:
const Axios = require("axios");
export default{
isAuthenticated : ()=>{
return Axios({
url: "http://localhost:4000/user/authenticated",
method: "GET",
}).then(res=>{
if(res.status !== 401)
return res.json().then(data => data);
else
return res.json({
isAuthenticated : false,
user:{
firstName:" ",
lastName:" ",
email:" "}});
})
.catch(err=>console.log("authenticated error :"+err));
}
}
我收到错误 Unhandled Rejection (TypeError): Cannot read property 'user' of undefined
11 |使用效果(()=>{
12 | AuthService.isAuthenticated()
13 | .then(数据 =>{
14 |设置用户(数据。用户); // 错误
15 | setIsAuthenticated(data.isAuthenticated);
16 | setIsLoaded(true);
17 | })
我在邮递员中测试它,我得到了我的预期
【问题讨论】: