我正在尝试开发用户认证页面,在与防火墙的反应。我可以签到,但签到并不会改变到签到。有什么问题吗?
const handleAuthentication = () => {
if(user){
auth.signOut();
}
} <div onClick={handleAuthentication}
className="header_option">
<span
className="header_optionLineOne" >Hello, Guest</span>
<span
className="header_optionLineTwo" >{user ?
'Sign Out': 'Sign In'}</span>
</div>发布于 2022-02-12 20:19:54
可能用户实际上已经被注销了,但是UI并不是重新命名,因为它不知道更改。
要解决这个问题,您需要将user存储在组件的状态,使用setState或useState钩子:
const [user, setUser] = useState(null);
auth.onAuthStateChanged((user) => {
setUser(user);
});当用户是状态的一部分时,对setUser(user)的调用将导致组件重登,从而显示更新的(缺乏)用户信息。
还请参阅获取当前用户上Firebase文档中的第一个代码片段。
https://stackoverflow.com/questions/71095482
复制相似问题