Stránka produktu v prohlížeči v Redux

V minulé lekci jsme vytvořili samostatnou stránku pro produkt. Nyní musíme zajistit, aby se po kliknutí na tlačítko naše stránka objevila v prohlížeči.

Nejprve jí přiřadíme adresu, na které se bude zobrazovat. Otevřeme soubor App.jsx, ve kterém definujeme trasy, a přidáme do children další podřízenou trasu (nezapomeňte importovat ProductPage.jsx). Nastavíme cestu a komponentu, kterou budeme zobrazovat:

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

Nyní otevřeme ProductsList.jsx v složce products a mírně upravíme kód pro dispProducts. Nyní máme samostatnou stránku s úplnými informacemi o každém produktu. To znamená, že v seznamu produktů budeme zobrazovat pouze název produktu a zkrácený text popisu. Také přidáme odkaz ve formě navigačního prvku Link z knihovny routeru, po jehož kliknutí se lze dostat na stránku produktu. Přidejme také divu třídu product-excerpt, aby byly produkty oddělené. Nyní bude náš kód pro dispProducts vypadat takto:

products/ProductsList.jsxconst 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>
))

Importujeme Link:

products/ProductsList.jsximport { Link } from 'react-router-dom'

A přidáme styly pro třídy link-btn a product-excerpt do index.css:

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;
}

Na závěr uděláme také funkční odkaz v levém menu, vedoucí na stránku se seznamem produktů, abychom se do něj mohli dostat z jakéhokoli jiného místa. K tomu otevřeme náš root.jsx a nahradíme tento řádek kódu:

app/root.jsx<a>Products</a>

Následujícím:

app/root.jsx<NavLink to="/products" end>
  Products
</NavLink>

Také nezapomeneme importovat NavLink z knihovny pro React router:

app/root.jsximport { Outlet, NavLink } from 'react-router-dom'

Spustíme naši aplikaci. Nyní můžeme přejít na stránku s informacemi o jakémkoli produktu kliknutím na tlačítko pro zobrazení. Zkuste nyní přidat nový produkt a podívejte se na jeho informace na samostatné stránce kliknutím na tlačítko pro zobrazení. Také nyní, pro návrat k seznamu produktů, stačí kliknout na 'Products' v menu vlevo. Když jste na různých stránkách, podívejte se, jak se mění URL v adresním řádku prohlížeče.

Задание 1

Otevřete svou aplikaci se studenty. V souboru App.jsx vytvořte další podřízenou trasu pro stránku studenta.

Задание 2

V souboru StudentsList.jsx proveďte v kódu změny pro dispStudents, jak je ukázáno v lekci.

Задание 3

Zařiďte, aby odkaz 'Students' v levém menu vedl na stránku se seznamem studentů. Ověřte, že vše funguje.

Задание 4

Podívejte se, jak se bude měnit hodnota v adresním řádku prohlížeče v závislosti na tom, na které stránce se právě nacházíte.