⊗jsrxPmATGS 51 of 57 menu

Preuzimanje podataka o prodavcima u Redux-u

Pokrenimo našu aplikaciju sa proizvodima. Vidimo da se u karticama sa proizvodima ne prikazuju prodavci. Preuzmimo ih sa servera i prikažimo te podatke. Za ovo ćemo morati da sprovedemo već poznatu sekvencu radnji.

Za početak otvorimo fajl server.js. Pronađimo niz handlers i dodajmo u njega još jednu obradu GET-zahteva (posle obrade GET za proizvode). Kao što vidite ona je praktično identična:

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

Zahtev na serveru smo obradili. Sledećim korakom u fajlu sellersSlice.js treba da napišemo thunk za preuzimanje podataka sa servera. Za ovo uveziemo u njega client i createAsyncThunk:

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

Sada ćemo preuzimati prodavce sa servera, pa ćemo ih ukloniti iz initialState, ostavivši samo prazne zagrade:

const initialState = []

A zatim pre funkcije sellersSlice kreirajmo naš thunk fetchSellers. Klijentu prosledimo putanju, koju smo naveli na serveru:

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

Ostalo nam je samo da za sellersSlice kreiramo dodatni reduktor. Ograničimo se ovde obradom uspešnog zahteva. Sve akcije, koje generiše fetchSellers, biće identične akcijama fetchProducts:

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

Podsetiću, da smo prošli put pri preuzimanju proizvoda menjali trenutnu vrednost stanja. Ovde smo koristili nešto drugačiji pristup i jednostavno vratili novu vrednost, jer je i u createSlice to moguće. Time smo postigli dva cilja. Prvo, dobili smo podatke, a drugo, sada imamo garanciju da se u listi prodavaca ne pojavi nešto drugo, jer smo potpuno prepisali slice vrednošću action.payload.

Otvorite vašu aplikaciju sa studentima. Otvorite u njoj fajl server.js, dodajte u niz handlers još jedan obrađivač za GET-zahtev predavača.

A sada otvorite fajl teachersSlice.js. Postavite initialState kao prazan niz, kao što je pokazano na lekciji. Pre funkcije studentsSlice napišite thunk fetchTeachers.

U funkciji createSlice dopišite dodatni reduktor, ograničite se obradom uspešnog zahteva.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij