⊗jsrxPmSDSO 36 of 57 menu

Henting av selektorer i Redux

Noen ganger er det veldig nyttig å bli kvitt unødvendig kode i applikasjonen, samt innkapsle data.

La oss åpne produktapplikasjonen vår. Legg merke til at på flere steder i applikasjonen bruker vi selektorer for å hente ut produkt-slicen for å utføre handlinger med den.

Nå skal vi åpne productsSlice.js, bla til slutten av filen og legge til noen kodelinjer, der vi skriver to selektorer og eksporterer dem. En funksjon vil være for å hente alle produkter:

export const selectAllProducts = (state) => state.products.products

Og etter den, en andre - for å hente ett produkt etter id:

export const selectProductById = (state, productId) => state.products.products.find((product) => product.id === productId)

Selvfølgelig kan du ha et rettferdig spørsmål - hvorfor har vi en slik konstruksjon: state.products.products? Svaret er enkelt, vi endret slice-strukturen i forrige leksjon og nå vil produktene våre ligge som en array i et separat egenskap products i produkt-slicen state.products (husk at state her er rot-objektet til Redux-tilstanden, som inneholder alle slicer).

På denne måten flyttet vi bare koden for selektor-funksjonene til ett sted i applikasjonen og nå må vi gjøre de tilsvarende endringene der vi brukte dem. La oss starte med filen ProductsList.jsx. Importer selectAllProducts til den, siden vi her trenger å hente alle produktene:

import { selectAllProducts } from './productsSlice'

Og i starten av ProductsList-funksjonen, bytter vi ut:

const products = useSelector((state) => state.products)

Med linjen:

const products = useSelector(selectAllProducts)

La oss nå gå til filen ProductPage.jsx. Her trengte vi et produkt etter id. La oss erstatte linjen (ikke glem importen):

const product = useSelector((state) => state.products.find((product) => product.id === productId) )

Med:

const product = useSelector((state) => selectProductById(state, productId))

Gjør en lignende erstatting selv i filen EditProductForm.jsx. Her trenger vi også et produkt etter id.

Husk at en slik optimalisering bare er for din egen bekvemmelighet og du kan gjøre den når du finner det nødvendig og passende. Og i vårt eksempel, se for deg at vi skrev koden for selektor-funksjonen hver gang på forskjellige steder, og så endret vi tilstandens struktur, og da måtte vi rette den opp i alle komponentene.

Åpne studentapplikasjonen din. Åpne filen studentsSlice.js i den. Skriv på slutten av filen og eksporter, slik det vises i leksjonen, to selektorer for å hente alle studentene selectAllStudents og for å hente en student etter id selectStudentById.

Importer nå selectAllStudents og selectStudentById i filene StudentsList.jsx, StudentPage.jsx og EditStudentForm.jsx, utfør de tilsvarende endringene i disse filene, som vist i leksjonen.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis