我正在制作一个反应和节点应用程序。我设法进行了登录和注册,但我有一个小问题。身份验证由 jwt 在本地存储中使用令牌进行管理。
我想要做的是显示我登录的用户的信息。所以,我用这个
const fetchUserData = async () => {
try {
const user = await API.getUser();
setUser(user.data);
} catch (err) {
console.log(err);
}
}
useEffect(() => {
fetchUserData()
}, [])
getUser 函数只是一个 axios 调用:
getUser: function () {
return axios.get(
`/currentUser`,
{
headers: headers
}
)
}
由于我的中间件,连接到它的控制器返回了我的用户。
app.get('/currentUser', auth, (req, res) => {
User.findOne({_id: req.user.id}, function (err, user) {
if (err) {
res.send(err);
}
res.json(user);
})
})
不幸的是,当我登录时,我可以看到我的令牌,但我所在州的用户仍然为空。
我在另一篇文章中看到,这是因为我的 useEffect 首先在安装组件时运行,并且没有很好地调用我的 getUser 函数。我认为我需要在我的 useEffect 的第二个参数中添加用户才能再次调用 useEffect 但它不会改变任何东西。
哦,我注意到登录后,如果我刷新页面,我的用户只会在我的状态下完成。
谢谢您的帮助