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

React中Firebase登录后点击按钮实现页面跳转的方法

登录成功后跳转页面的解决方案

在React项目中结合Firebase Auth实现登录后跳转,最适配的方案是使用React Router提供的useNavigate钩子——它能在登录请求完成后手动触发项目内页面跳转,不会打断Firebase的认证流程。

具体实现步骤:

  1. 导入useNavigate钩子
    在组件文件顶部导入React Router的useNavigate:

    import { useNavigate } from 'react-router-dom';
    
  2. 初始化navigate函数
    在组件内部调用useNavigate获取跳转方法:

    const navigate = useNavigate();
    
  3. 在登录成功回调中触发跳转
    修改toggleSignIn函数,在signInWithEmailAndPassword的then回调里调用navigate,跳转到目标页面的路由路径:

    function toggleSignIn(e) {
        e.preventDefault();
        signInWithEmailAndPassword(auth, email, password)
          .then((response) => {
            console.log(response);
            // 登录成功后跳转到CardsTabs页面
            navigate('/CardsTabs');
          })
          .catch(function(error) {
            var errorCode = error.code;
            var errorMessage = error.message;
            if (errorCode === "auth/wrong-password") {
              alert("Wrong password.");
            } else {
              alert(errorMessage);
            }
            console.log(error);
          });
      }
    
  4. 移除按钮上无效的to属性
    原按钮上的to是Link组件的专属属性,普通button标签不识别,直接删除即可:

    <button
        type="submit"
        onClick={toggleSignIn}
    >
        Giriş Yap
    </button>
    

注意事项:

  • 确保项目已配置React Router,且CardsTabs组件已在路由规则中注册,比如路由配置文件中有类似代码:
    import { Routes, Route } from 'react-router-dom';
    import CardsTabs from './path/to/CardsTabs';
    
    function App() {
      return (
        <Routes>
          {/* 其他路由 */}
          <Route path="/CardsTabs" element={<CardsTabs />} />
        </Routes>
      );
    }
    
  • 这种方式会在登录请求完全成功后才触发跳转,不会像Link组件那样提前中断异步请求,完美解决Firebase Auth无法正常工作的问题。

内容的提问来源于stack exchange,提问作者Hazal Kaya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:30:44