如果条件为真,如何重定向到另一个页面

时间:2019-05-29 11:46:31

标签: reactjs firebase firebase-authentication react-router google-cloud-firestore

如果用户状态登录为true,我想重定向,然后重定向到主屏幕,这表明我登录时状态已更改,但没有重定向到主屏幕。

`componentDidMount() {
//realtime auth state subscriber
this.auth_unsb = firebase.auth().onAuthStateChanged(user => {
  if (user) {
    this.setState({ loggedIn: true });
    //if logged in
    this.handleUser(user);

    //each time user logs in, subscribe to realtime changes for it's doc
    this.user_unsb = this.firebase
      .firestore()
      .collection("users")
      .doc(user.uid)
      .onSnapshot(
        doc =>
          //sync user data to store
          (Store.currentUserDoc = doc.data()),
        e => {}
      );
  } //if logged out
  else {
    this.setState({ loggedIn: false });
    //unsubscribing from realtime user do changes
    if (this.user_unsb) this.user_unsb();
    return <Redirect to="/login" />;
  }
});

} `

2 个答案:

答案 0 :(得分:1)

如果要轻松重定向,可以使用以下代码:

if (your_condition) {
    window.location.href = 'your/path';
}

JavaScript通用。

答案 1 :(得分:0)

您可以使用历史记录对象

history.push("/login");

或 在render方法中检查this.user_unsb的值,

if(this.user_unsb){
  return <Redirect to="/login" />;
}

// return your component jsx;

希望这可以为您提供帮助!