Установка React Router в Redux приложение

На прошлых уроках мы установили основные инструменты для работы с Redux. Часто бывает так, что приложению нужен маршрутизатор для навигации по его web-страницам и наше приложение не станет исключением. Для этого мы установим библиотеку React Router.

Откроем наш проект и наберем в терминале следующую команду:

terminalnpm install react-router-dom

Забегая немного вперед, скажу, что наше Redux приложение традиционно посвящено продуктам, информация о которых выкладывается некими продавцами. Поэтому сейчас мы немного переделаем главный компонент App, а также добавим в приложение функционал для осуществления маршрутизации.

Для начала зайдем в папку src, а затем в app и создадим здесь файл root.jsx. Это будет корень нашего сайта: cлева у нас будет менюшка, а справа - контент (пока же у нас здесь только заголовок):

app/root.jsxfunction Root() {
  return (
    <div id="main">
      <div id="menu">
        <nav>
          <a>Products</a>
          <a>Sellers</a>
        </nav>
      </div>
      <div id="main_page">
        <h2>This is my first Redux app!</h2>
        <hr></hr>
      </div>
    </div>
  )
}

export default Root

А компонент App мы переделаем. Для начала полностью удалим его содержимое. Затем импортируем две функции для роутера и наш корневой компонент Root:

App.jsximport { createBrowserRouter, RouterProvider } from 'react-router-dom'
import Root from './app/root'

Ниже после импорта создадим роутер, и пропишем первый маршрут, передав ему наш Root в качестве отображаемого элемента и, соответсвенно, установив путь в '/'. В дальнейшем в App мы будем добавлять и другие необходимые маршруты:

App.jsxconst router = createBrowserRouter([{ path: '/', element: <Root /> }])

Ниже напишем код функции App:

App.jsxfunction App() {
  return <RouterProvider router={router} />
}

export default App

Все. Запускаем. В следующем разделе мы будем реализовывать компоненты для работы Redux приложения.

Напоследок добавим немного красоты, прописав для этого стили в index.css:

index.cssbody {
  font-size: 24px;
  line-height: 1.5;
}

nav {
  display: flex;
  flex-direction: column;
}

ul {
  list-style: none;
  padding: 0;
}

h1, h2, h3 {
  margin: 0;
}

a {
  text-decoration: none;
  color: blue;
  cursor: pointer;
}

#main {
  display: flex;
  margin: 20px;
}

#menu {
  margin-right: 50px;
  padding-top: 50px;
  padding-right: 50px;
  border-right: 2px solid lightgray;
  font-weight: bold;
}
Задание 1

Добавьте React Router в ваше приложение.

Задание 2

Пусть ваше приложение будет касаться студентов, информацию о которых будут выкладывать преподаватели. Учитывая это, создайте корневой компонент Root. Переделайте компонент App как описано в уроке.