⊗jsrxPmATGS 51 of 57 menu

Myyjien tietojen hankinta Reduxissa

Käynnistetään sovelluksemme tuotteilla. Näemme, että tuotekorteissa myyjiä ei näytetä. Haetaan heidän tietonsa palvelimelta ja näytetään nämä tiedot. Tätä varten meidän on suoritettava jo tuttu toimintosarja.

Aluksi avaa tiedosto server.js. Etsi taulukko handlers ja lisää siihen vielä yksi GET-pyynnön käsittely (tuotteiden GET-käsittelyn jälkeen). Kuten näette, se on melkein identtinen:

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

Olemme käsitelleet pyynnön palvelimella. Seuraavaksi meidän on tiedostossa sellersSlice.js kirjoitettava thunk tietojen hakemiseksi palvelimelta. Tätä varten tuomme siihen client ja createAsyncThunk:

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

Nyt haemme myyjät palvelimelta, joten poistamme heidät initialState:sta, jättäen vain tyhjät sulkeet:

const initialState = []

Ja sitten ennen funktiota sellersSlice luomme thunkimme fetchSellers. Asiakkaalle annamme polun, jonka määritsimme palvelimelle:

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

Meidän on vain luotava sellersSlice:lle ylimääräinen reducer. Rajoitamme tässä onnistuneen pyynnön käsittelyyn. Kaikki fetchSellers:n luomat actionit ovat identtisiä fetchProducts:n actioneiden kanssa:

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

Muistutan, että viime kerralla tuotteita haettaessa muutimme nykyistä tilan arvoa. Tässä käytimme hieman erilaista tapaa ja yksinkertaisesti palautimme uuden arvon, niin kuin createSlice:ssa myös voidaan. Näin saavutimme kaksi tavoitetta. Ensinnäkin saimme tiedot, ja toiseksi, nyt meillä on takuu, että myyjien listassa ei ilmesty mitään muuta, sillä korvasimme sliceen kokonaan arvolla action.payload.

Avaa opiskelijasovelluksesi. Avaa siellä tiedosto server.js, lisää taulukkoon handlers vielä yksi käsittelijä opettajien GET-pyynnölle.

Avaa nyt tiedosto teachersSlice.js. Tee initialState tyhjäksi taulukoksi, kuten oppitunnilla näytetään. Ennen funktiota studentsSlice kirjoita thunk fetchTeachers.

Funktiossa createSlice lisää ylimääräinen reducer, rajoitu onnistuneen pyynnön käsittelyyn.

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ää