Проверяющий, который вы ставите
<Route path='/user-profile' render={() => ( this.state.isLoggedIn ? <UserProfile /> : <Redirect to='/login' /> )}/>
, здесь говорит, что если пользователь в данный момент находится на пути user-profile
и он не вошел в систему, он должен предположить, что он перенаправлен, но это ничего не говорит о пользователе, который в данный момент находится в login
пути.
Вы можете добавить те же (но противоположные) логы c к Route
логин и пароль -
<Route path='/login' render={() => ( !this.state.isLoggedIn ? <Login /> : <Redirect to='/user-profile' /> )}/>
или добавьте Redirect
в Login
сам компонент после успешной попытки входа в систему