⊗jsrxPmRDMDO 30 of 57 menu

Wielokrotne używanie danych z slice w Redux

Na poprzednich zajęciach dodaliśmy do formularza dodawania produktu kolejne pole z rozwijaną listą do wyboru sprzedawcy, który go wystawia. Załóżmy, teraz musimy również wyświetlić te informacje w kilku innych miejscach aplikacji. W tym celu nie będziemy za każdym razem duplikować kodu, a po prostu stworzymy osobny komponent, w którym będziemy pobierać dane z slice i wyświetlać je w tych częściach aplikacji, gdzie potrzebujemy.

Otwórzmy naszą aplikację z produktami. Teraz w folderze products stwórzmy jeszcze plik SellerOfProd.jsx. Na początek zaimportujmy hook useSelector, za pomocą którego będziemy pobierać slice z potrzebnym produktem:

import { useSelector } from 'react-redux'

Następnie pobierzmy z store potrzebny produkt po id sprzedawcy, który będziemy przekazywać naszemu nowemu komponentowi w propsach:

export const SellerOfProd = ({ sellerId }) => { const seller = useSelector((state) => state.sellers.find((seller) => seller.id === sellerId) ) }

I w przypadku, gdy taki sprzedawca istnieje, będziemy zwracać jego nazwę, a jeśli nie, to zwrócimy 'unknown':

return <span>by {seller ? seller.name : 'unknown'}</span>

Teraz zaimportujmy nasz nowy komponent w ProductsList.jsx i wstawmy go w funkcji ProductsList zaraz po nagłówku z nazwą produktu. Jak widzisz, przekazaliśmy mu w propsach id:

<SellerOfProd sellerId={product.seller} />

Teraz, jeśli uruchomimy naszą aplikację, dodamy nowy produkt i znajdziemy go na liście, zobaczymy, że ma sprzedawcę, a u produktów automatycznie dodanych przy uruchomieniu aplikacji będzie 'unknown'.

Małe odstępstwo: jeśli twój eslint w edytorze VS Code narzeka na sellerId, a aplikacja działa, to możesz na razie zignorować to lub otworzyć plik .eslintrc.cjs twojej aplikacji i w rules dodać "react/prop-types": "off".

Samo się rozumie, że chcielibyśmy dodać informację o sprzedawcy również na stronie produktu. W tym celu wstawmy w werscji ProductPage po nagłówku z nazwą produktu znowu ten wiersz i sprawdźmy, czy wszystko działa:

<SellerOfProd sellerId={product.seller} />

Otwórz twoją aplikację ze studentami. Po zapoznaniu się z materiałem lekcji, w folderze students stwórz plik dla komponentu TeacherForStudent. W rezultacie komponent powinien zwracać imię i nazwisko wykładowcy, a obok w nawiasach przedmiot, który prowadzi. Potrzebnego wykładowcę znajdź za pomocą hooka useSelector. Jeśli wykładowca dla danego studenta nie istnieje, wyświetl 'anonym'.

Za pomocą otrzymanego komponentu z poprzedniego zadania wyświetl dane wykładowcy dla każdego studenta na stronie z listą studentów.

Zrób to samo, co w poprzednim zadaniu, ale dla osobnej strony studenta.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć