В 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).