⊗jsrxPmATGS 51 of 57 menu

Získavanie údajov predajcov v Reduxe

Spustíme našu aplikáciu s produktmi. Vidíme, že na kartách produktov sa nezobrazujú predajcovia. Získajme ich zo servera a zobrazme tieto údaje. Na to budeme musieť vykonať už známu postupnosť akcií.

Na začiatok otvorme súbor server.js. Nájdime pole handlers a pridajme doň ešte jedno spracovanie GET požiadavky (po spracovaní GET pre produkty). Ako vidíte, je takmer identické:

http.get('/fakeServer/sellers', async () => { await delay(ARTIFICIAL_DELAY_MS) return HttpResponse.json(db.seller.getAll()) }),

Požiadavku na serveri sme spracovali. Ďalšou fázou musíme v súbore sellersSlice.js napísať thunk na získanie údajov zo servera. Na to importujeme doň client a createAsyncThunk:

import { createSlice, createAsyncThunk } from '@reduxjs/toolkit' import { client } from '../../api/client'

Teraz budeme získavať predajcov zo servera, preto ich odstránime z initialState, pričom necháme len prázdne zátvorky:

const initialState = []

A potom pred funkciou sellersSlice vytvorme náš thunk fetchSellers. Klientovi odovzdáme cestu, ktorú sme zadali na serveri:

export const fetchSellers = createAsyncThunk( 'sellers/fetchSellers', async () => { const response = await client.get('/fakeServer/sellers') return response.data } )

Ostáva nám len pre sellersSlice vytvoriť dodatočný reducer. Obmedzme sa tu na spracovanie úspešnej požiadavky. Všetky akcie generované fetchSellers budú identické s akciami fetchProducts:

const sellersSlice = createSlice({ name: 'sellers', initialState, reducers: {}, extraReducers(builder) { builder.addCase(fetchSellers.fulfilled, (state, action) => { return action.payload }) }, })

Pripomínam, že minule pri získavaní produktov sme menili aktuálnu hodnotu stavu. Tu sme použili trochu inú cestu a jednoducho sme vrátili novú hodnotu, takto sa to dá urobiť aj v createSlice. Tým sme dosiahli dva ciele. Po prvé, získali sme údaje, a po druhé, teraz máme záruku, že v zozname predajcov sa neobjaví nič ďalšie, pretože sme úplne prepísali slice hodnotou action.payload.

Otvorte svoju aplikáciu so študentmi. Otvorte v nej súbor server.js, pridajte do poľa handlers ešte jeden spracovateľ pre GET požiadavku učiteľov.

A teraz otvorte súbor teachersSlice.js. Nastavte initialState ako prázdne pole, ako je ukázané v lekcii. Pred funkciou studentsSlice napíšte thunk fetchTeachers.

Vo funkcii createSlice dopíšte dodatočný reducer, obmedzte sa na spracovanie úspešnej požiadavky.

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ť