⊗jsrxPmATInr 45 of 57 menu

Hyrje në Thunks në Redux

Në kapitullin e mëparshëm ne organizuam punën e serverit, bazës së të dhënave dhe klientit për shkëmbim të të dhënave. Tani ne kemi nevojë të vendosim urën e fundit, e cila do të ndihmojë aplikacionin tonë Redux të organizuar 'sinkronisht' të ndërveprojë me klientin asinkron, të cilin e krijuam në mësimin e fundit të kapitullit të mëparshëm, për të dërguar kërkesa dhe për të marrë të dhënat e nevojshme në përgjigje.

Siç e kujtojmë nga mësimet e para të seksionit të mëparshëm, Redux nuk di asgjë për punën me logjikën asinkrone dhe për këtë ne do të përdorim thunk middleware. Ky middleware lejon punën me actions të dërguara, të përdorë në kodin e thunk tonë metodat dispatch dhe getState të store, si dhe të ndihmojë metodën dispatch të punojë jo vetëm me objekte të rregullta JS, por edhe me entitete të tilla si funksione dhe promise.

Zakonisht funksioni thunk thirret me dy argumente dispatch dhe getState (siç është e nevojshme), të cilat mund të përdoren në trupin e këtij funksioni. Me ndihmën e tij mund të dërgoni actione të rregullta. Gjithashtu ai mund të dërgohet përmes store.dispatch. Një shembull i një funksioni të tillë është paraqitur më poshtë:

const changeColorThunk = (dispatch, getState) => { const colorBefore = getState() console.log(`Ngjyra e Vjetër: ${colorBefore.color}`) dispatch(changeColor()) const colorAfter = getState() console.log(`Ngjyra e Re: ${colorAfter.color}`) } store.dispatch(changeColorThunk)

Tani le të hapim aplikacionin tonë me produktet. Gjëja e parë që duhet të marrim nga serveri kur nisim aplikacionin është lista e produkteve. Meqenëse zakonisht thunks shkruhen në skedarët slice, ne do të hapim skedarin productsSlice.js.

Lajmi i gëzueshëm është se ne nuk kemi nevojë të merremi me instalimin e Redux Thunk, pasi funksioni configureStore nga RTK e ka bërë tashmë këtë për ne. Prandaj thjesht le të shtojmë createAsyncThunk në import në skedar:

import { createSlice, nanoid, createAsyncThunk } from '@reduxjs/toolkit'

Le të shtojmë gjithashtu në import edhe klientin tonë:

import { client } from '../../api/client'

Dhe tani me ndihmën e createAsyncThunk le të krijojmë thunk-in tonë të parë për marrjen e produkteve, le ta bëjmë këtë menjëherë pas deklarimit të objektit initialState:

export const fetchProducts = createAsyncThunk()

Parametri i parë i createAsyncThunk do të marrë një varg për llojin e action-it të gjeneruar, ndërsa i dyti - funksionin callback për payload, i cili si rezultat do të kthejë ose të dhëna, ose një promise me gabim (shikoni skedarin client.js). Në kodin e funksionit ne thërrasim client.get dhe i kalojmë atij rrugën, të cilën e kemi përcaktuar në server (shikoni parametrat e pranuar http.getserver.js):

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

Hapni aplikacionin tuaj me studentët. Hapni në të skedarin studentsSlice.js. Importoni në të funksionin createAsyncThunk për krijimin e thunk, si dhe client për dërgimin e kërkesave API në server.

Menjëherë pas deklarimit të objektit initialState me ndihmën e createAsyncThunk krijojeni thunk fetchStudents për marrjen e listës së studentëve, i cili do të dërgojë një kërkesë GET në adresën /fakeServer/students, të përcaktuar nga ju në skedarin server.js, dhe do të kthejë response.data, siç tregohet në materialet e mësimit. Si parametër i parë për createAsyncThunk specifikoni vargun students/fetchStudents për llojin e action-it.

Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo