2017-12-04 9 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

실제 리디렉션을하려면'리디렉션 '을 렌더링해야합니다. 귀하의 예제에서 당신은 단지 콜백에서 그것을 반환합니다. Checkout [이 SO 질문] (https://stackoverflow.com/questions/42123261/programmatically-navigate-using-react-router-v4). Ctrl + F를 눌러 '2.-withRouter 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" /> 
    } 
); 
} 

그냥 바로 당신을 리디렉션 것을 좋아한다.