Страница продукта в браузере в Redux

На прошлом занятии мы сделали отдельную страничку для продукта. Теперь нам надо сделать так, чтобы при нажатии на какую-нибудь кнопку наша страничка появлялась в браузере.

Для начала прицепим для нее адрес, по которому она будет отображаться. Откроем файл App.jsx, в котором мы прописываем маршруты и добавим в children еще один дочерний маршрут (не забудьте импортировать ProductPage.jsx). Укажем путь и компонент, который будем выводить:

{ path: '/products/:productId', element: <ProductPage />, },

Теперь давайте откроем ProductsList.jsx в папке products и немного изменим код для dispProducts. Теперь у нас есть отдельная страничка с полной информацией о каждом продукте. Значит в списке продуктов мы будем отображать только название продукта и сокращенный текст описания. Также мы добавим ссылочку в виде элемента навигации Link из библиотеки роутера, при нажатии на которую можно будет попасть на страничку продукта. Добавим также диву класс product-excerpt, чтобы разлепить продукты. Теперь наш код для dispProducts будет таким:

const dispProducts = products.map((product) => ( <div key={product.id} className="product-excerpt"> <h3>{product.name}</h3> <p>{product.desc.substring(0, 100)}</p> <Link to={`/products/${product.id}`} className="link-btn"> view </Link> </div> ))

Импортируем Link:

import { Link } from 'react-router-dom'

И добавим стилей для классов link-btn и product-excerpt в index.css:

.product-excerpt { margin-top: 30px; border: 1px solid gray; border-radius: 5px; padding: 10px; } .link-btn { border: 1.5px solid gray; border-radius: 10px; background-color: coral; color: black; padding: 1px 12px 1px 12px; }

Напоследок, давайте сделаем также рабочей ссылку в меню слева, ведущую на страницу со списком продуктов, чтобы мы смогли попасть в него с любого другого места. Для этого откроем наш root.jsx и заменим эту строку кода:

<a>Products</a>

На следующую:

<NavLink to="/products" end> Products </NavLink>

Также не забудем импортировать NavLink из библиотеки для React роутера:

import { Outlet, NavLink } from 'react-router-dom'

Запустим наше приложение. Теперь мы можем выходить на страницу информации о любом продукте, нажав на кнопку просмотра. Попробуйте теперь добавить новый продукт и посмотрите информацию о нем на отдельной странице нажав кнопочку просмотра. Также теперь, чтобы вернуться к списку продуктов достаточно кликнуть на 'Products' в меню слева. Находясь на разных страничках, посмотрите как меняется URL в адресной строке браузера.

Откройте ваше приложение со студентами. В файле App.jsx создайте еще один дочерний маршрут для странички студента.

В файле StudentsList.jsx внесите в код изменения для dispStudents, как показано в уроке.

Сделайте так, чтобы ссылка 'Students' в левом меню вела на страницу со списком студентов. Проверьте, что все заработало.

Посмотрите как будет меняться значение в адресной строке браузера, в зависимости от того на какой страничке вы сейчас находитесь.



Чат с GPT Компилятор