⊗jsrxPmATSL 56 of 57 menu

Försäljarlista i Redux

På de senaste lektionerna avslutade vi med det huvudsakliga materialet. Nu med hjälp av thunk hämtar vi en lista över produkter från servern och kan spara en ny produkt på servern. Låt oss ta reda på med försäljarna. Vi får trots allt data för dem också. Låt oss skapa en separat sida med en lista över försäljare.

Låt oss öppna vår produktapplikation, och i den mappen sellers. Låt oss skapa i denna mapp filen SellersList.jsx. Här kommer vi att använda useSelector, Link och selectAllSellers, vars kod vi kommer att skriva i sellersSlice.js lite senare:

import { useSelector } from 'react-redux' import { Link } from 'react-router-dom' import { selectAllSellers } from './sellersSlice'

Därefter skapar vi själva SellersList. I den kommer vi att få alla försäljare med hjälp av hooken useSelector, sedan få HTML-strukturen för listan av försäljare i en map-loop, där varje försäljarens namn kommer att leda till deras sida. Och till slut returnera HTML-strukturen med en rubrik och den erhållna listan:

export const SellersList = () => { const sellers = useSelector(selectAllSellers) const sellersToRender = sellers.map((seller) => ( <li key={seller.id}> <Link to={`/sellers/${seller.id}`}>{seller.name}</Link> </li> )) return ( <div> <h2>Försäljare:</h2> <ul>{sellersToRender}</ul> </div> ) }

Sedan går vi in i filen sellersSlice.js och i enlighet med selektorerna i productsSlice.js skapar vi i slutet av filen två selektorer efter exporten av reducern:

export const selectAllSellers = (state) => state.sellers export const selectSellerById = (state, sellerId) => state.sellers.find((seller) => seller.id === sellerId)

Nu måste vi ange en route för sidan med listan, för att göra detta öppnar vi filen App.jsx och i arrayen med barnrutter children lägger vi till ytterligare ett objekt (glöm inte att importera komponenten SellersList):

{ path: '/sellers', element: <SellersList />, },

För att vår länk 'Sellers' i menyn ska fungera, låt oss gå in i filen root.jsx (hur länge sedan var det ... ) och byta ut taggen a mot elementet NavLink:

<NavLink to="/sellers" end> Försäljare </NavLink>

Och sist. För att i vår meny ska den aktiva länken markeras, och det ska vara tydligt på vilken sida vi befinner oss, lägger vi till en stil i index.css:

nav a.active { color: purple; }

Låt oss starta vår applikation. Nu kan vi gå till sidan med försäljare genom att klicka på 'Försäljare' i menyn. Naturligtvis måste vi först klicka på 'Products' i menyn, annars kommer våra produkter inte att laddas. I nästa lektion ska vi göra en sida för varje försäljare och avsluta inlärningen av denna handledning i Redux.

Öppna din applikation med studenter. Efter att ha studerat lektionens material, skapa i mappen teachers filen TeachersList.jsx. Med hjälp av denna komponent kommer du att visa en lista över lärare. Importera till den nödvändiga komponenter och hooks.

Skriv koden för komponenten TeachersList, hämta alla lärare i den och skapa en lista över lärare teachersToRender, låt varje rad i denna lista visa deras efternamn och initialer, och inom parentes ämnet som de undervisar i. Låt varje hela namn var en länk som leder till en separat sida för varje lärare. Sedan i slutet av komponentkoden, returnera HTML-strukturen med en rubrik och den skapade listan.

I slutet av filen teachersSlice.js, skapa ett par funktionsselektorer selectAllTeachers och selectTeacherById, som visas i lektionen.

I App.jsx, anslut ytterligare en barn- route för sidan med lärare.

I filen root.jsx, i menyn för 'Teachers', byt ut taggen a mot NavLink, som visas i lektionen. Se till att den aktiva länken i menyn markeras på något sätt genom att lägga till stilar för detta i index.css.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa