⊗jsrxPmSDSO 36 of 57 menu

Kry van selektore in Redux

Dit is soms baie nuttig om onnodige kode in die toepassing te verwyder, en ook data te inkapsuleer.

Kom ons maak ons toepassing met produkte oop. Let op dat ons op verskeie plekke in die toepassing, deur selektore te gebruik, die produk-slyk uittrek om een of ander aksie daarmee uit te voer.

En nou sal ons ons productsSlice.js oopmaak, na heel onder in die lêer afrol en 'n paar reëls kode byvoeg, waarin ons twee selektore sal skryf en dit sal uitvoer. Een funksie sal vir ons wees om alle produkte te kry:

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

En daarna die tweede een - om een produk volgens id te kry:

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

Natuurlik kan jy 'n regverdige vraag hê - waar kom so 'n kombinasie vandaan: state.products.products? Die antwoord is eenvoudig, ons het immers in die vorige les die struktuur van die slyk verander en nou sal ons produkte as 'n array in 'n afsonderlike eienskap products van die produk-slyk state.products wees (onthou dat hier state die wortelobjek van die Redux-toestand is, wat al die slyke bevat).

Sodoende het ons eenvoudig die kode vir die funksie-selektore na een plek in die toepassing geskuif en nou moet ons toepaslike veranderinge aanbring waar ons dit gebruik het. Kom ons begin met die lêer ProductsList.jsx. Laat ons daarin selectAllProducts invoer, want hier sal ons al die produkte nodig hê:

import { selectAllProducts } from './productsSlice'

En aan die begin van die funksie ProductsList se kode, vervang ons:

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

Met die reël:

const products = useSelector(selectAllProducts)

En nou gaan ons na die lêer ProductPage.jsx. Hier het ons 'n produk volgens id nodig gehad. Laat ons die reël vervang (moenie die invoer vergeet nie):

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

Met:

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

Doen self 'n soortgelyke vervanging in die lêer EditProductForm.jsx. Hier het ons ook 'n produk volgens id nodig.

Onthou dat so 'n optimalisering slegs vir jou gemak is en jy kan dit doen wanneer jy dit nodig en gerieflik ag. En in ons voorbeeld, dink net: ons sou die kode vir die funksie-selektor elke keer op verskillende plekke geskryf het, en dan sou ons die struktuur van die toestand verander, en dan sou ons dit in alle komponente moes regmaak.

Maak jou toepassing met studente oop. Maak daarin die lêer studentsSlice.js oop. Heel onder in die lêer, skryf en voer uit, soos in die les gewys, twee selektore vir die verkryging van alle studente selectAllStudents en vir die verkryging van een student volgens id selectStudentById.

Voer nou selectAllStudents en selectStudentById in die lêers StudentsList.jsx, StudentPage.jsx en EditStudentForm.jsx in, maak in hierdie lêers die toepaslike veranderinge, soos in die les gewys.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp