⊗jsrxPmSDSO 36 of 57 menu

Získavanie selektorov v Reduxe

Niekedy je veľmi užitočné zbaviť sa nadbytočného kódu v aplikácii, ako aj inkapsulovať dáta.

Otvorme našu aplikáciu s produktmi. Všimnite si, že na niekoľkých miestach aplikácie sme, pomocou selektorov, vytiahli slice s produktami, aby sme s ním vykonali nejaké akcie.

A teraz otvoríme náš productsSlice.js, zostúpime na úplný koniec súboru a pridáme pár riadkov kódu, v ktorom napíšeme dva selektory a exportujeme ich. Jedna funkcia u nás bude na získanie všetkých produktov:

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

A po ňom druhá - na získanie jedného produktu podľa id:

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

Samozrejme, môže vám nastať oprávnená otázka - odkiaľ máme takýto zápis: state.products.products? Odpoveď je jednoduchá, veď sme na minulej lekcii zmenili štruktúru slice a teraz naše produkty budú uložené ako pole v samostatnej vlastnosti products slice produktov state.products (pamätajte, že tu state je koreňový objekt stavu Redux, ktorý obsahuje všetky slice).

Takto sme jednoducho presunuli kód pre funkcie-selektory na jedno miesto v aplikácii a teraz potrebujeme vykonať zodpovedajúce zmeny tam, kde sme ich použili. Začnime so súborom ProductsList.jsx. Importujme do neho selectAllProducts, pretože tu nám treba získať všetky produkty:

import { selectAllProducts } from './productsSlice'

A na začiatku kódu funkcie ProductsList nahraďme:

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

Týmto riadkom:

const products = useSelector(selectAllProducts)

A teraz prejdime k súboru ProductPage.jsx. Tu bol potrebný produkt podľa id. Urobme nahradenie riadku (nezabudnite na import):

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

Za:

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

Podobnú výmenu urobte sami v súbore EditProductForm.jsx. Tu nám tiež treba produkt podľa id.

Pamätajte, že takáto optimalizácia je len pre vaše pohodlie a môžete ju urobiť vtedy, keď ju budete považovať za potrebnú a vhodnú. Na našom príklade si predstavte, že by sme písali kód funkcie-selektora zakaždým na rôznych miestach, a potom by sme zmenili štruktúru stavu, a museli by sme ho potom opravovať vo všetkých komponentoch.

Otvorte vašu aplikáciu so študentmi. Otvorte v nej súbor studentsSlice.js. Na úplnom konci súboru napíšte a exportujte, ako je ukázané v lekcii, dva selektory na získanie všetkých študentov selectAllStudents a na získanie jedného študenta podľa id selectStudentById.

Teraz importujte selectAllStudents a selectStudentById do súborov StudentsList.jsx, StudentPage.jsx a EditStudentForm.jsx, vykonajte v týchto súboroch zodpovedajúce zmeny, ako je ukázané v lekcii.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť