Я пытаюсь создать условный маршрут, создав компонент ProtectedRoute
, как описано в выбранном ответе на этот вопрос .
Условие исходит от реквизита, переданного в компонент ProtectedRoute
.Пожалуйста, взгляните на компонент и код маршрутизации ниже.
import React, {Component} from "react";
import { Route } from 'react-router-dom';
import { Redirect } from 'react-router';
class ProtectedRoute extends Component {
render() {
const { component: Component, ...props } = this.props
return (
<Route
{...props}
render={props => (
this.props.profile.name === "admin" ?
<Component {...props} /> :
<Redirect to='/login' />
)}
/>
)
}
}
export default ProtectedRoute;
Ниже показано, как выполнить маршрутизацию в отдельном компоненте боковой навигационной панели.Объект profile
передается этому компоненту как реквизиты из App.js
.
<main>
<Route path="/" exact component={props => <Home/>} />
<ProtectedRoute path="/dashboard" component={props => <Dashboard profile={this.props.profile} />} />
</main>
Ошибка, которую я получаю при запуске вышеуказанного приложения: TypeError: _this2.props.pofile is undefined
.Однако, когда я ставлю Route
вместо ProtectedRoute
, то есть
<Route path="/dashboard" component={props => <Dashboard profile={this.props.profile} />} />
,
, приложение работает должным образом.
Может ли кто-нибудь помочь мне, указав, что я делаю неправильно?Это будет высоко ценится.