⊗jsrxPmATGS 51 of 57 menu

Извличане на данни за продавачи в Redux

Нека стартираме нашето приложение с продукти. Виждаме, че в картичките с продукти не се показват продавачи. Нека ги извлечем от сървъра и покажем тези данни. За това ще трябва да извършим вече познатата последователност от действия.

Като начало нека отворим файла server.js. Да намерим масива handlers и да добавим още една обработка на GET заявка (след обработката на GET за продукти). Както виждате, тя е почти идентична:

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

Заявката към сървъра я обработихме. На следващия етап във файла sellersSlice.js трябва да напишем thunk за извличане на данни от сървъра. За това импортираме в него client и createAsyncThunk:

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

Сега ще извличаме продавачи от сървъра, затова ще ги премахнем от initialState, оставяйки просто празни скоби:

const initialState = []

А след това преди функцията sellersSlice ще създадем нашия thunk fetchSellers. На клиента ще подадем пътя, указан от нас на сървъра:

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

Остава само за sellersSlice да създадем допълнителен reducer. Ще се ограничим тук с обработката на успешна заявка. Всички екшъни, генерирани от fetchSellers, ще бъдат идентични на екшъните от fetchProducts:

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

Напомням, че последния път при получаване на продукти ние променяхме текущата стойност на state. Тук ние използвахме малко по-различен подход и просто върнахме нова стойност, така в createSlice също е възможно. По този начин постигнахме две цели. Първо, получихме данните, и второ, сега имаме гаранция, че в списъка с продавачи няма да се появи нещо друго, тъй като напълно презаписахме slice със стойността action.payload.

Отворете вашето приложение със студенти. Отворете в него файла server.js, добавете в масива handlers още един обработчик за GET заявка на преподаватели.

А сега отворете файла teachersSlice.js. Направете initialState празен масив, както е показано в урока. Преди функцията studentsSlice напишете thunk fetchTeachers.

Във функцията createSlice допишете допълнителен reducer, ограничете се до обработката на успешна заявка.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне