# Роутинг и защита страниц авторизацией ## Роутинг Установим `react-router-dom`: ```bash filename="Terminal" pnpm i react-router-dom ``` Создадим файл `src/router.tsx`: ```tsx filename="src/router.tsx" import { createBrowserRouter, RouterProvider } from 'react-router-dom' const router = createBrowserRouter([ { path: '/', element:
hello
, }, ]) export const Router = () => { return } ``` Отрендерим его в `App`: ```tsx filename="src/App.tsx" import { Router } from '@/router' export function App() { return } ``` ## Защита страниц авторизацией Разделим наши роуты на две переменные - `publicRoutes` и `privateRoutes`: ```tsx filename="src/router.tsx" import { createBrowserRouter, RouteObject, RouterProvider } from 'react-router-dom' const publicRoutes: RouteObject[] = [ { path: '/login', element:
login
, }, ] const privateRoutes: RouteObject[] = [ { path: '/', element:
hello
, }, ] const router = createBrowserRouter([...privateRoutes, ...publicRoutes]) ``` Создадим компонент `PrivateRoutes`: ```tsx filename="src/router.tsx" function PrivateRoutes() { const isAuthenticated = false return isAuthenticated ? : } ``` И обернем им наши privateRoutes: ```tsx filename="src/router.tsx" const router = createBrowserRouter([ { element: , children: privateRoutes, }, ...publicRoutes, ]) ``` Теперь когда `isAuthenticated` будет `false`, при переходе на `/` мы будем перенаправлены на `/login`.