⊗jsrxPmSDSO 36 of 57 menu

Obținerea selectorilor în Redux

Uneori este foarte util să scapi de codul redundant în aplicație, precum și să încapsulezi datele.

Să deschidem aplicația noastră cu produse. Atenție, că în mai multe locuri aplicației noi, folosind selectori, extragem slice-ul cu produse pentru a efectua niște acțiuni cu el.

Iar acum vom deschide fișierul nostru productsSlice.js, vom coborî până la sfârșitul fișierului și vom adăuga câteva rânduri de cod, în care vom scrie doi selectori și îi vom exporta. O funcție va fi pentru obținerea tuturor produselor:

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

Și după aceea a doua - pentru obținerea unui produs după id:

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

Desigur, vă poate apărea o întrebare justificată - de unde avem o astfel de structură: state.products.products? Răspunsul este simplu, noi la lecția trecută am schimbat structura slice-ului și acum produsele noastre vor fi situate sub formă de array într-o proprietate separată products a slice-ului produselor state.products (amintiți-vă că aici state este obiectul rădăcină al stării Redux, care conține toate slice-urile).

Astfel, noi pur și simplu am mutat codul pentru funcțiile-selector într-un singur loc în aplicație și acum trebuie să facem modificările corespunzătoare acolo, unde le-am folosit. Vom începe cu fișierul ProductsList.jsx. Vom importa în el selectAllProducts, deoarece aici ne trebuie să obținem toate produsele:

import { selectAllProducts } from './productsSlice'

Și la începutul codului funcției ProductsList, vom înlocui:

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

Cu linia:

const products = useSelector(selectAllProducts)

Iar acum să trecem la fișierul ProductPage.jsx. Aici ne trebuia un produs după id. Să facem înlocuirea liniei (nu uitați de import):

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

Cu:

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

Faceți singuri o înlocuire similară în fișierul EditProductForm.jsx. Aici ne trebuie de asemenea un produs după id.

Amintiți-vă, că o astfel de optimizare este doar pentru confortul vostru și o puteți face atunci când o considerați necesară și convenabilă. Iar în exemplul nostru imaginați-vă că am fi scris codul funcției-selector de fiecare dată în locuri diferite, iar apoi am fi schimbat structura stării, și ar fi trebuit să o corectăm atunci în toate componentele.

Deschideți aplicația voastră cu studenți. Deschideți în ea fișierul studentsSlice.js. La sfârșitul fișierului scrieți și exportați, așa cum se arată în lecție, doi selectori pentru obținerea tuturor studenților selectAllStudents și pentru obținerea unui student după id selectStudentById.

Acum importați selectAllStudents și selectStudentById în fișierele StudentsList.jsx, StudentPage.jsx și EditStudentForm.jsx, faceți în aceste fișiere modificările corespunzătoare, așa cum se arată în lecție.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge