⊗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, იდენტური იქნება fetchProducts-ის action-ების:

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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა