⊗jsrxPmSDSO 36 of 57 menu

Selektorien hankinta Reduxissa

On joskus erittäin hyödyllistä päästä eroon tarpeettomasta koodista sovelluksessa sekä kapseloida data.

Avataan tuotesovelluksemme. Huomaa, että useassa paikassa sovellusta käytämme selektoreita nostaaksemme tuoteslaisen, jotta voimme suorittaa sen kanssa joitain toimintoja.

Ja nyt avaamme tiedostomme productsSlice.js, menemme tiedoston loppuun ja lisäämme pari koodiriviä, joissa kirjoitamme kaksi selektoria ja viemme ne. Yksi funktio on kaikkien tuotteiden hakemiseen:

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

Ja sen jälkeen toinen - yhden tuotteen hakemiseen id:n perusteella:

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

Tietenkin sinulla voi herää oikeutettu kysymys - mistä meillä on tällainen kiemura: state.products.products? Vastaus on yksinkertainen, muistatko, että edellisellä tunnilla muutimme slaisen rakennetta ja nyt tuotteemme sijaitsevat taulukkona erillisessä ominaisuudessa products tuoteslaisessa state.products (muista, että tässä state on Reduxin pääkohdetila, joka sisältää kaikki slaiseja).

Siten siirsimme vain koodin selektori-funktioille yhteen paikkaan sovelluksessa ja nyt meidän täytyy tehdä asianmukaiset muutokset siellä, missä käytimme niitä. Aloitetaan tiedostosta ProductsList.jsx. Tuodaan siihen selectAllProducts, koska tässä tarvitsemme saada kaikki tuotteet:

import { selectAllProducts } from './productsSlice'

Ja funktion ProductsList alussa, korvataan:

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

Rivillä:

const products = useSelector(selectAllProducts)

Ja nyt siirrytään tiedostoon ProductPage.jsx. Tässä tarvitsimme tuotteen id:n perusteella. Teemme korvauksen riville (älä unohda importtia):

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

Kohtaan:

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

Tee samanlainen korjaus itse tiedostoon EditProductForm.jsx. Tässä tarvitsemme myös tuotteen id:n perusteella.

Muista, että tällainen optimointi on vain sinun mukavuutesi vuoksi ja voit tehdä sen silloin, kun pidät sitä tarpeellisena ja kätevänä. Ja esimerkissämme kuvittele, että olisimme kirjoittaneet selektori-funktion koodin joka kerta eri paikoissa, ja sitten olisimme muuttaneet tilan rakennetta, ja se olisi sitten täytynyt korjata kaikissa komponenteissa.

Avaa opiskelijasovelluksesi. Avaa siellä tiedosto studentsSlice.js. Tiedoston alareunassa kirjoita ja vie, kuten oppitunnilla näytetään, kaksi selektoria kaikkien opiskelijoiden saamiseksi selectAllStudents ja yhden opiskelijan saamiseksi id:n perusteella selectStudentById.

Nyt tuo selectAllStudents ja selectStudentById tiedostoihin StudentsList.jsx, StudentPage.jsx ja EditStudentForm.jsx, tee näissä tiedostoissa asianmukaiset muutokset, kuten oppitunnilla näytetään.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää