Задать вопрос
polyak-888
@polyak-888
Js, React.js, css, frontend

Как можно оптимизировать роуты?

Есть код:
<Switch>         
            <Route path="/login">
              { service.auth.isAuth ? <Redirect to="/" /> : <LoginPage />}  
            </Route>

            <Route path="/registration">
              { service.auth.isAuth ? <Redirect to="/" /> : <RegistrationPage />}
            </Route>  

            <Route exact path={['/', '/info']}>
              { !service.auth.isAuth ? <Redirect to="/login" /> : <InfoPage /> }               
            </Route>
            
            <Route path="/notes" exact>
              { !service.auth.isAuth ? <Redirect to="/login" /> : <NotesPage /> }              
            </Route>

            <Route path="/notes/:id" exact>
              { !service.auth.isAuth ? <Redirect to="/login" /> : <NoteDetails /> }              
            </Route>

            <Route path="/notes/edit/:id">
              { !service.auth.isAuth ? <Redirect to="/login" /> : <NoteEdit /> }             
            </Route>

            <Route path="/goods">
              { !service.auth.isAuth ? <Redirect to="/login" /> : <GoodsPage /> }              
            </Route>

            <Route path="/basket">
              { !service.auth.isAuth ? <Redirect to="/login" /> : <BasketPage /> }              
            </Route>

            <Route path="*">
              { service.auth.isAuth 
                ? <Alert title="Error 404" text="Page not found!" type="danger" />
                : <LoginPage />}                
            </Route>              
          </Switch>

Подскажите как можно оптимизировать чтобы в каждом роуте не прописывать условие на проверку авторизации!
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Merion Academy
    Frontend-разработка на React
    4 месяца
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
Решения вопроса 1
@1programmer
Может быть типа того ?
const PrivateRoute = ({ component: Component, ...rest }) => (
  <Route {...rest} render={(props) => (
    !service.auth.isAuth
      ? <Component {...props} />
      : <Redirect to='/' />
  )} />
)


<PrivateRoute path='/info' component={InfoPage} />
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
miraage
@miraage
Старый прогер
Я бы убрал проверки из роутов, и перенёс их в какой-нибудь useEffect в одном из корневых компонентов, типа App или AuthProvider.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽