⊗jsrxPmSDSO 36 of 57 menu

Selektoru iegūšana Redux

Dažreiz ir ļoti noderīgi atbrīvoties no liekā koda lietotnē, kā arī inkapsulēt datus.

Atvērsim mūsu produktu lietotni. Ievērojiet, ka vairākās vietās lietotnē mēs, izmantojot selektorus, izvelkam produktu slāni, lai ar to veiktu kādas darbības.

Tagad mēs atvērsim mūsu productsSlice.js, nokāpsim līdz pašai faila beigām un pievienosim pāris koda rindiņas, kurās uzrakstīsim divus selektorus un eksportēsim tos. Viena funkcija mums būs visu produktu iegūšanai:

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

Un pēc tam otrā - viena produkta iegūšanai pēc id:

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

Protams, jums var rasties pamatots jautājums - no kurienes mums tāds greznība: state.products.products? Atbilde ir vienkārša, mēs jau pagājušajā nodarbībā mainījām slāņa struktūru un tagad mūsu produkti atradīsies masīva veidā atsevišķā īpašībā products produktu slāņa state.products (atceraties, ka šeit state ir Redux stāvokļa saknes objekts, kas satur visus slāņus).

Tādējādi mēs vienkārši pārvietojām kodu funkcijām-selektoriem vienā vietā lietotnē, un tagad mums ir jāveic atbilstošās izmaiņas tur, kur mēs tās izmantojām. Sāksim ar failu ProductsList.jsx. Importēsim tajā selectAllProducts, jo šeit mums būs jāiegūst visi produkti:

import { selectAllProducts } from './productsSlice'

Un funkcijas ProductsList koda sākumā aizstāsim:

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

Ar rindiņu:

const products = useSelector(selectAllProducts)

Tagad pāriesim pie faila ProductPage.jsx. Šeit mums vajadzēja produktu pēc id. Veiksim aizstāšanu (neaizmirstiet par importu):

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

Uz:

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

Veiciet līdzīgu aizstāšanu paši failā EditProductForm.jsx. Šeit mums arī vajag produktu pēc id.

Atcerieties, ka šāda optimizācija ir tikai jūsu ērtībai, un jūs varat to izdarīt tad, kad uzskatāt to par nepieciešamu un ērtu. Un mūsu piemērā iedomājieties, ka mēs rakstītu selektora funkcijas kodu katru reizi dažādās vietās, un pēc tam mainītu stāvokļa struktūru, un tad tas būtu jālabo visos komponentos.

Atveriet savu studentu lietotni. Atveriet tajā failu studentsSlice.js. Faila beigās uzrakstiet un eksportējiet, kā parādīts nodarbībā, divus selektorus: visu studentu iegūšanai selectAllStudents un viena studenta iegūšanai pēc id selectStudentById.

Tagad importējiet selectAllStudents un selectStudentById failos StudentsList.jsx, StudentPage.jsx un EditStudentForm.jsx, veiciet šajos failos atbilstošās izmaiņas, kā parādīts nodarbībā.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt