⊗jsrxPmATInr 45 of 57 menu

Redux-da thunks-lere giriş

Öňki bapda, maglumat çalşyrmak üçin serweriň, maglumat bazasynyň we müşderiniň işini gurapdyk. Indi bizim 'sinxron' gurapdyrylan Redux programmamyzyň öňki bapdaky soňky sapakda döreden asinxron müşderimiz bilen özara gatnaşyk etmegine ýardam edjek iň soňky köpri gurmak zerurlygy bar.

Öňki bölümiň ilkinji sapaklaryndan ýadyňyzda bolşy ýaly, Redux asinxron logika bilen işlemek barada hiç zat bilmeýär we bun üçin biz thunk middleware ulanyarys. Bu middleware iberilen actions-lar bilen işlemäge, thunk kodymyzda dispatch we getState store usullaryny ulanyp bilmäge, şeýle hem dispatch usulyna adaty JS obýektleri bilen çäklenmän, funksiýalar we promisler ýaly esesler bilen hem işlemäge mümkinçilik berýär.

Adatça thunk-funkiýasy iki argument bilen çagyrylýar dispatch we getState (zerur bolsa), olary bu funksiýanyň bedeninde ulanyp bolýar. Onuň kömegi bilen adaty ekşenleri iberip bolýar. Şeýle hem onu store.dispatch arkaly iberip bolýar. Mysal aşakda görkezilýär:

const changeColorThunk = (dispatch, getState) => { const colorBefore = getState() console.log(`Köne reňk: ${colorBefore.color}`) dispatch(changeColor()) const colorAfter = getState() console.log(`Täze reňk: ${colorAfter.color}`) } store.dispatch(changeColorThunk)

Indi önümler barada programmamyzy açalyň. Programmany işledeniňizde serwerden ilkinji almaly zatymyz - bu önümleriň sanawydyr. Adatça thunks-lar slice faýllarynda ýazylandygy üçin, biz productsSlice.js faýlyny açarys.

Hoş habarymysyz şu, biz Redux Thunk gurnamak bilen aladalanyp ýöremeýäris, sebäbi RTK-daky configureStore funksiýasy buny bizim üçin eder. Şonuň üçin faýla importda createAsyncThunk goşup göreli:

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

Şeýle hem müşderimizi hem import edeliň:

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

Indi bolsa createAsyncThunk-iň kömegi bilen ilkinji thunk-y önümleri almak üçin döredeliň, buny initialState obyekti hökmünde kesgitlenenden soň:

export const fetchProducts = createAsyncThunk()

createAsyncThunk-iň birinji parametri döredilen ekşeniň görnüşi üçin setir alar, ikinjisi bolsa payload üçin kollbek-funkiýasy bolup, netijede ýa-da maglumatlary, ýa-da ýalňyşlyk promisini gaýtarar (serwer faýlyna serediň client.js). Funksiýanyň kodunda biz client.get çagyryp, serwerde görkezen ýoluny berýäris (serwerde kabul edilýän parametrlere serediň http.get server.js faýlynda):

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

Talyp programmany açyň. Onyň içinde studentsSlice.js faýlyny açyň. Thunk döretmek üçin createAsyncThunk funksiýasyny import ediň, şeýle hem serwere API soraglaryny ibermek üçin client.

initialState obyekti hökmünde kesgitlenenden soň, createAsyncThunk arkaly thunk dörediň fetchStudents talyplaryň sanawyny almak üçin, GET-sorag iberjek /fakeServer/students salgyna, siziň server.js faýlyňyzda görkezilişi ýaly, we gaýtarjak response.data, sapak materiallarynda görkezilişi ýaly. createAsyncThunk üçin birinji parametr hökmünde students/fetchStudents setirini görkeziň ekşeniň görnüşi üçin.

Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et