⊗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. Ограничимо се овде на обраду успешног захтева. Сви action-и, генерисани од стране fetchSellers, биће идентични action-има 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ščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј