В компоненте Header
Не устанавливайте состояние, используйте props.name так:
{(this.props.name !== "")
? <li> <a href="/updateLiveGames">Update Live Games</a></li>
: ""
}
Когда вы инициализируете this.state в компоненте заголовка, он будет установлен только один раз при создании компонента. Вот почему вы должны использовать this.props, который будет обновляться при каждом обновлении компонента.
При маршрутизации, когда вы используете localStorage.getItem («пользователь»), он не вызывает принудительное обновление, поскольку не является ни состоянием, ни свойством props, поэтому не обновляет компонент.
Поскольку вы не используете Redux, вы должны передать обратный вызов в качестве реквизита из Login.js в маршрутизацию:
.then((data) => {
if (data.length === 1) {
localStorage.setItem('user', data[0].EMAIL);
localStorage.setItem('isLoggedIn',true);
this.props.setLoginData(data[0].EMAIL)
А при маршрутизации вы должны получить это:
<Login setLoginData={this.setLoginData} />
setLoginData = (name) => {
this.setState({name});
}
И передать this.state.name компоненту Header:
<Header name={this.state.name} />