reactjs - 尝试在reactjs中使用firebase auth保持用户登录
问题描述
我有一个使用 firebase 进行身份验证和其他工具的反应应用程序。在某个页面上,我检查用户是否使用firebase.auth().currentUser;
& 也尝试过登录,firebase.auth().onAuthStateChanged
但它会将我重定向到登录页面,表明我没有登录,而我刚刚登录。
这是我迄今为止尝试过的代码:
const [user, setUser] = React.useState(firebase.auth().currentUser);
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
setUser(user);
}
})
React.useEffect(() => {
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
setUser(user);
}
})
});
return(
<Styles>
{ user ?
<Paper className={clsx(classes.root, "Paper")}>
<div className="overlay"></div>
<Container maxWidth="lg">
<HeaderTypography variant="h2" color="" gutterBottom>
Create an Event
</HeaderTypography> : <Redirect to="/login"/> }
即使登录后,当我来到这个页面时,我仍然会被重定向.. 欢迎任何帮助
解决方案
确保您拥有所有组件的结束标签。还有一个围绕主要 Paper
组件的parathesis。下面的代码将起作用。例如:
function App() {
const [user, setUser] = React.useState(null);
useEffect(() => {
firebase.auth().onAuthStateChanged(async(userData) => {
console.log(userData);
if (userData) {
setUser(userData);
} else {
setUser(null);
}
});
}, []);
return (
user ?
(<Paper className={clsx(classes.root, "Paper")}>
<div className="overlay"></div>
<Container maxWidth="lg">
<HeaderTypography variant="h2" color="" gutterBottom>
Create an Event
</HeaderTypography>
</Container>
</Paper>) :
<Redirect to="/login"/>
);
}
推荐阅读
- jenkins - kubectl get secret 从 Jenkins 那里吐出一句废话
- r - Rshiny 中的数据集
- informatica - informatica 云 REST API 内容编码 UTF-8 错误
- javascript - 编写js程序创建map_armstrong函数
- python - python asyncio任务的最大数量是多少
- javascript - 通过模块增强扩展 Material UI 主题无法正常工作
- spring-boot - 我如何模拟 UserServiceDetails 和 Userservice
- elasticsearch - Elasticsearch 子字段查询
- azure - 新创建的 Azure 数据工厂 v2 没有托管标识
- javascript - 将 PDF 编码为 Base64 字符串并使用 Node.js Buffer.from() 导致文件损坏