Re-render Header 在 Firebase 登录
Re-render Header on Firebase Login
我在使用 Firebase 登录后更新 header 时遇到问题...
当我刷新我的浏览器时,它会回到我没有登录的状态,直到我被重定向。当刷新后检测到用户登录时,我想 re-render 我的 header。
这是我目前改变header的方法。
<li>
{!auth.currentUser && (<Link to="/signup/" className="button button-primary button-wide-mobile button-sm" onClick={closeMenu}>Sign Up</Link>)}
{auth.currentUser && (<Link to="/accounts/" className="button button-primary button-wide-mobile button-sm" onClick={closeMenu}>{auth.currentUser.displayName}</Link>)}
</li>
我最终找到了答案,并认为 post 在这里会有所帮助。
首先我定义了一个登录状态。
const [isLoggedIn, setIsLoggedIn] = useState(false);
然后我使用以下方法设置状态:
useEffect(() => {
const auth = getAuth();
onAuthStateChanged(auth, (user) => {
setIsLoggedIn(!!user);
});
}, []);
然后我用
测量了isLoggedIn
的值
{!isLoggedIn && (<Link to="/signup/" className="button button-primary button-wide-mobile button-sm" onClick={closeMenu}>Sign Up</Link>)}
{isLoggedIn && (<Link to="/accounts/" className="button button-primary button-wide-mobile button-sm" onClick={closeMenu}>Account</Link>)}
我在使用 Firebase 登录后更新 header 时遇到问题... 当我刷新我的浏览器时,它会回到我没有登录的状态,直到我被重定向。当刷新后检测到用户登录时,我想 re-render 我的 header。
这是我目前改变header的方法。
<li>
{!auth.currentUser && (<Link to="/signup/" className="button button-primary button-wide-mobile button-sm" onClick={closeMenu}>Sign Up</Link>)}
{auth.currentUser && (<Link to="/accounts/" className="button button-primary button-wide-mobile button-sm" onClick={closeMenu}>{auth.currentUser.displayName}</Link>)}
</li>
我最终找到了答案,并认为 post 在这里会有所帮助。
首先我定义了一个登录状态。
const [isLoggedIn, setIsLoggedIn] = useState(false);
然后我使用以下方法设置状态:
useEffect(() => {
const auth = getAuth();
onAuthStateChanged(auth, (user) => {
setIsLoggedIn(!!user);
});
}, []);
然后我用
测量了isLoggedIn
的值
{!isLoggedIn && (<Link to="/signup/" className="button button-primary button-wide-mobile button-sm" onClick={closeMenu}>Sign Up</Link>)}
{isLoggedIn && (<Link to="/accounts/" className="button button-primary button-wide-mobile button-sm" onClick={closeMenu}>Account</Link>)}