You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中Login/Logout按钮条件渲染失效问题

React Auth0 认证按钮渲染逻辑错误修复
  • 问题根源:你在两种实现方式中都把认证状态与按钮的对应逻辑搞反了:

    • 当isAuthenticated为true(用户已登录)时,代码错误渲染了Login按钮,而非Logout按钮
    • 当isAuthenticated为false(用户未登录)时,错误渲染了Logout按钮,而非Login按钮
  • 修正后的代码实现

    方式一:修正三元表达式

    <div className="auth">
        {
            isAuthenticated ?
            (<button onClick={() => logout({ logoutParams: { returnTo: window.location.origin } })}><CiLogout /></button>)
            :
            (<button onClick={() => loginWithRedirect()}><CiLogin /></button>)
        }
    </div>
    

    方式二:修正if-else逻辑

    const Nav = () => {
        const { loginWithRedirect, logout, user, isAuthenticated  } = useAuth0();
        let authButton;
    
      if (isAuthenticated) {
        // 用户已登录,渲染Logout按钮
        authButton = (
          <button onClick={() => logout({ logoutParams: { returnTo: window.location.origin } })}><CiLogout /></button>
        );
      } else {
        // 用户未登录,渲染Login按钮
        authButton = (
          <button onClick={() => loginWithRedirect()}><CiLogin /></button>
        );
      }
      // 其余代码保持不变...
    }
    
  • 验证逻辑:修正后,用户登录时isAuthenticated为true,会渲染Logout按钮,点击即可执行登出;未登录时渲染Login按钮,点击触发登录跳转,完全符合预期行为。

内容的提问来源于stack exchange,提问作者Hamza Arif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:01:38