2017-12-04 5 views
0

私は、ユーザーがNavbarのログアウトボタンをクリックしたときに公開されているログインページにリダイレクトするように反応ルータ4を設定しようとしています。ログアウト機能は動作しますが、ユーザーはログアウトしますが、リダイレクトは発生しません。私はここで何が欠けていますか?ログアウト時にログインページにリダイレクト

私はreact-router v4とmeteorjsを使用しています。

<button type="button" className="btn btn-link logout-button" onClick={() => Meteor.logout(() => (<Redirect to="/login" />))}>Logout</button>

+1

実際のリダイレクトを行うには、 'Redirect'をレンダリングする必要があります。あなたの例では、コールバックから返すだけです。チェックアウト[このSOの質問](https://stackoverflow.com/questions/42123261/programmatically-navigate-using-react-router-v4) Ctrl + Fキーを押して「2.- with Roow HoC」を選択します。 –

答えて

1
import { Redirect } from "react-router"; 
class Header extends Component { 
constructor(props){ 
    super(props); 

    this.state = { 
    isLoggedIn: Meteor.userId(), 
    } 
} 

handleLogout(e){ 
e.preventDefault(); 

    Meteor.logout((error) =>{ 
    if (error) { 
     console.log(error.reason); 
    }else{ 
     this.setState({isLoggedIn: !this.state.isLoggedIn,}); 
     console.log("Logout successful"); 
    } 
}); 
} 

render() { 
return (
    { 
    (this.state.isLoggedIn) && 
     <Redirect to="/Login" /> 
    } 
); 
} 

ただ、まさにそれはあなたをリダイレクトする必要があることが好きです。

関連する問題