Я вижу, что etarhan уже предоставил правильный ответ, но я просто хочу упомянуть кое-что о том, как сделать ваш код чище, а значит, более удобным и читабельным.Пожалуйста, я настоятельно рекомендую разделить вашу логику.
Я вижу, вы написали выше:
Я потерял в параметрах.
И я не удивлен.Я тоже потерялся!Я бы порекомендовал отделить логику немного больше.Также вам не нужно и оператор else
возвращает, как если бы это был не первый if
, он имеет в качестве другого, поэтому мы можем просто вернуть то, что в блоке else
.Вот как я разделил ваш код.
import React from 'react';
import { Route, Redirect } from 'react-router-dom';
import auth from '../_helpers/auth';
class PrivateRoute extends React.Component {
getComponent = () => {
const { component: Component, location } = this.props;
if (auth.isAuthenticated) {
return (
<Component {...this.props} />
);
}
return (
<Redirect
to={{
pathname: '/public',
state: {
from: location,
},
}}
/>
);
}
render() {
const { ...rest } = this.props;
return (
<Route {...rest} render={this.getComponent()} />
);
}
}
Как заявил Роберт С. Мартин в своей книге «Чистый код: руководство по гибкому программному обеспечению» (настоятельно рекомендуется).
«Чистый код - это код, о котором позаботились.Кто-то нашел время, чтобы сохранить его простым и упорядоченным.Они уделили должное внимание деталям.Они позаботились. »