В таких сценариях лучше использовать избыточность, так как это делает связь между компонентами очень простой.Иначе, если вы хотите пойти трудным путем, то создайте родительский компонент, который обернет как login, так и MyAppBar.
class ParentComp extends Component{
constructor(props){
super(props);
this.state={
isLoggedIn:false
};
this.setLoginState=this.setLoginState.bind(this);
}
setLoginState(value){
this.setState({isLoggedIn:value});
}
render(){
return(<div>
<MyAppBar isLoggedIn={this.state.isLoggedIn} />
<Route path={path} render={props=><Login {..props} setLoginState={this.setLoginState}/>}/>
</div>);
}
}
в вашем LoginComponent, вызовите метод setLoginState
this.props.setLoginState(true);
ив вашем компоненте myappbar используйте реквизит isLoggedIn для условного рендеринга
renderLogin(){
if(this.props.isLoggedIn){
// return loggedin jsx
}else{
return the alternative
}
}