React Firebase redirection



当用户登录或注册时,我想重定向到仪表板页面在这种情况下,我得到了用户已经登录或注册的控制台,但页面不会进入面板

import { BrowserRouter as Router, Link, Redirect } from "react-router-dom";
//in signin.js
login = e => {
const { email, password } = this.state;
const { router } = this.props;
e.preventDefault();
auth()
.signInWithEmailAndPassword(email, password)
.then(user => {
if (user) {
console.log('user has signed in or up', user);
return <Redirect to='/profile' />;
} else {
console.log('user signed out or still need to sign in', user);
return <Redirect to='/signIn' />;
}
})
.catch(error => {
console.log(e);
});
};
//in App.js
render() {
return (
<Router>
<Route exact path="/" component={SignIn} />
<Route exact path="/signIn" component={SignIn} />
<Route exact path="/signUp" component={SignUp} />
<AuthorizedRoute exact path="/dashboard" component={Profile} />
</Router>
);
}

在注册中,我甚至没有收到控制台消息,我认为如果用户存在,就没有必要检查注册,所以我该如何在注册中进行操作

//in sign up.js
signUp = e => {
const { email, password } = this.state;
e.preventDefault();
auth()
.createUserWithEmailAndPassword(email, password)
.then(user => {
if (user) {
console.log('user has signed in or up', user);
return <Redirect to='/dashboard' />;
} else {
console.log('user signed out or still need to sign in', user);
return <Redirect to='/signIn' />;
}
})
.catch(error => {
console.log(error);
});
};

您正在使用什么重定向?代码现在还不清楚,无法回答这个问题。

res.redirect("/user/add");

您也可以根据响应使用此方法。

根据提供的代码,在成功登录后,重定向URL应该是'/dashboard',而不是'/profile'。

您的注册功能应该产生一些控制台输出。如果真的没有,那就意味着函数没有被(成功(调用。

与其在登录/注册承诺中使用重定向,更好的方法是使用onAuthStateChanged的单个"身份验证状态观测器",它将响应您的登录/注册/注销事件并相应地重定向。(请参阅本主题的Firebase指南:网站上的Firebase身份验证入门(有了这个观测器,您的signInWithEmailAndPasswordcreateUserWithEmailAndPassword调用只需要处理错误响应。

最新更新