⊗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 функциясидан олдин fetchSellers thunkимизни яратамиз. Клиентга биз серверда кўрсатган йўлимизни ўтказамиз:

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

Биз учун фақат sellersSlice учун қўшимча редьюсер яратиш қолди. Бу ерда муваффақиятли соровни қайта ишлаш билан чекланамиз. fetchSellers томонидан яратилган барча экшенлар, fetchProducts экшенлари бибир хил бўлади:

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

Эслатиб ўтамиз, ўтган дафт маҳсулотларни олгандамиз, биз жорий стейт қийматини ўзгартирган эдик. Бу ерда биз бир оз бошқа йўлдан фойдаландик ва жуда оддийгина янги қийматни қайтардик, createSlice да хам шундай қилиш мумкин. Шу тариқа биз иккита мақсадга эришдик. Биринчидан, биз маълумотларни олдик, иккинчидан, энди бизда сотиловчилар рўйхатида яна нимадир пайдо бўлиши хақида кафолат йўқ, чунки биз слайсни тўлиқ action.payload қиймати билан қайта ёздик.

Студентларингиз билан иловангизни очинг. Унда server.js файлини очиб, handlers массасига ўқитувчилар учун яна битта GET-соринишни қайта ишловчини қўшинг.

Энди teachersSlice.js файлини очинг. initialState ни дарсда кўрсатилганидек бош массив қилинг. studentsSlice функциясидан олдин fetchTeachers thunkini ёзинг.

createSlice функциясида қўшимча редьюсерни тўлдиринг, фақат муваффақиятли соровни қайта ишлаш билан чекланинг.

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