Обработка условий входа в React JSX Router DOM: методы условного рендеринга

В React JSX вы можете использовать условный рендеринг для обработки условий входа в DOM маршрутизатора. Вот несколько методов, которые вы можете использовать:

Метод 1: использование компонента Routeс реквизитом рендеринга:

import { Route, Redirect } from 'react-router-dom';
// ...
<Route
  path="/dashboard"
  render={() =>
    isLoggedIn ? <Dashboard /> : <Redirect to="/login" />
  }
/>

Метод 2. Использование компонента PrivateRoute:

import { Route, Redirect } from 'react-router-dom';
const PrivateRoute = ({ component: Component, ...rest }) => (
  <Route
    {...rest}
    render={(props) =>
      isLoggedIn ? (
        <Component {...props} />
      ) : (
        <Redirect to="/login" />
      )
    }
  />
);
// ...
<PrivateRoute path="/dashboard" component={Dashboard} />

Метод 3. Использование специального перехватчика:

import { Route, Redirect } from 'react-router-dom';
const ProtectedRoute = ({ component: Component, ...rest }) => {
  const isLoggedIn = useAuthentication(); // Custom hook to check login status
  return (
    <Route
      {...rest}
      render={(props) =>
        isLoggedIn ? (
          <Component {...props} />
        ) : (
          <Redirect to="/login" />
        )
      }
    />
  );
};
// ...
<ProtectedRoute path="/dashboard" component={Dashboard} />

Эти методы позволяют условно отображать компонент в зависимости от статуса входа. Если пользователь вошел в систему (isLoggedInимеет значение true), отображается нужный компонент (например, Dashboard). В противном случае пользователь перенаправляется на страницу входа (/login).