Посмотрите на приведенный ниже код для достижения желаемого результата:
<Switch>
{this.props.notLoggedIn === true
? <Route path='/' component={LandingPage}/>
: <Dashboard />
}
<Route component={PageNotFound}/>
</Switch>
В приведенном выше случае я показываю целевую страницу в качестве маршрута по умолчанию, и в случае, если пользователь вошел в систему на приборной панели, отображается(содержит больше маршрутов).Чтобы контролировать, аутентифицирован ли пользователь или нет, я устанавливаю состояние auth
через отправку на целевой странице, например
handleSubmit = (e) => {
e.preventDefault()
const { value} = this.state
const { dispatch } = this.props
dispatch(setAuthedUser(value))
}
. После этого в моем приложении я могу получить к нему доступ и установить * 1008.* опораСм.
function mapStateToProps ({ authedUser }) {
return {
notLoggedIn: authedUser === null
}
}
Если не найдено ни одного маршрута, отображается компонент PageNotFound
.
Полный код можно посмотреть в репо: Репо