⊗jsrxPmATGS 51 of 57 menu

Obținerea datelor vânzătorilor în Redux

Să pornim aplicația noastră cu produsele. Vedem că în cardurile cu produse nu sunt afișați vânzătorii. Să îi obținem de la server și să afișăm aceste date. Pentru aceasta va trebui să efectuăm șirul de acțiuni deja familiar.

Pentru început deschideți fișierul server.js. Găsiți vectorul handlers și adăugați în el încă o prelucrare a cererii GET (după prelucrarea GET pentru produse). După cum vedeți, este practic identică:

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

Am prelucrat cererea pe server. Următoarea etapă este ca în fișierul sellersSlice.js să scriem un thunk pentru obținerea datelor de la server. Pentru aceasta importați în el client și createAsyncThunk:

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

Acum vom obține vânzătorii de la server, de aceea îi vom elimina din initialState, lăsând doar paranteze goale:

const initialState = []

Iar apoi, înaintea funcției sellersSlice să creăm thunk-ul nostru fetchSellers. Clientului îi vom transmite calea specificată de noi pe server:

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

Ne rămâne doar să pentru sellersSlice să creăm un reducer suplimentar. Ne vom limita aici la prelucrarea cererii cu succes. Toate acțiunile, generate de fetchSellers, vor fi identice cu acțiunile fetchProducts:

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

Vă reamintesc că data trecută, la obținerea produselor, noi modificam valoarea curentă a stării. Aici noi am utilizat o cale ușor diferită și pur și simplu am returnat o nouă valoare, deoarece și în createSlice se poate la fel. Astfel am atins două obiective. În primul rând, am obținut datele, iar în al doilea rând, acum avem garanția că în lista vânzătorilor nu va apărea ceva în plus, deoarece am rescris complet slice-ul cu valoarea action.payload.

Deschideți aplicația voastră cu studenții. Deschideți în ea fișierul server.js, adăugați în vectorul handlers încă un handler pentru cererea GET a profesorilor.

Iar acum deschideți fișierul teachersSlice.js. Faceți initialState un vector gol, așa cum este arătat în lecție. Înaintea funcției studentsSlice scrieți thunk-ul fetchTeachers.

În funcția createSlice adăugați un reducer suplimentar, limitați-vă la prelucrarea cererii cu succes.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge