⊗jsrxPmATInr 45 of 57 menu

Sissejuhatus thunk'idesse Redux'is

Eelmises peatükis organiseerisime serveri, andmebaasi ja kliendi andmevahetuseks. Nüüd peame looma viimase silla, mis aitab meil 'sünkroonselt' organiseeritud Redux rakendusel suhelda asünkroonse kliendiga, mille lõime eelmise peatüki viimasel tunnil, et saata päringuid ja vastuses vajalikke andmeid.

Nagu mäletame esimestest tundidest eelmisest jaotisest, Redux ei tea midagi asünkroonse loogikaga töötamisest ja selleks kasutame thunk middleware'it. See middleware võimaldab töötada saadetud action'itega, kasutada oma thunk'i koodis dispatch ja getState meetodeid store'ist, ning aidata dispatch meetodil töötada mitte ainult tavaliste JS objektidega, vaid ka selliste olemitega nagu funktsioonid ja promis'id.

Tavaliselt kutsutakse thunk-funktsioon kahe argumendiga dispatch ja getState (vajadusel), mida saab kasutada selle funktsiooni kehas. Selle abil saab saata tavalisi action'eid. Samuti saab seda saata läbi store.dispatch. Sellise funktsiooni näide on toodud allpool:

const changeColorThunk = (dispatch, getState) => { const colorBefore = getState() console.log(`Vana värv: ${colorBefore.color}`) dispatch(changeColor()) const colorAfter = getState() console.log(`Uus värv: ${colorAfter.color}`) } store.dispatch(changeColorThunk)

Avame nüüd meie tooterakenduse. Esimene asi, mida peame serverist saama rakenduse käivitamisel - see on toodete nimekiri. Kuna tavaliselt thunk'id kirjutatakse slice-failidesse, siis avame faili productsSlice.js.

Hea uudis on see, et meil ei pea ise Redux Thunk'i paigaldama, kuna funktsioon configureStore RTK'st teeb selle meie eest ära. Seega lihtsalt lisame createAsyncThunk impordi faili:

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

Lisame impordi ka meie kliendi:

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

Ja nüüd createAsyncThunk abil loome oma esimese thunk'i toodete saamiseks, teeme seda kohe pärast objekti initialState deklareerimist:

export const fetchProducts = createAsyncThunk()

Esimese parameetrina createAsyncThunk võtab stringi genereeritava action'i tüübi jaoks, ja teise - callback-funktsiooni payload jaoks, mis lõpuks tagastab kas andmed või promisi veaga (vaadake faili client.js). Funktsiooni koodis me kutsume client.get ja anname sellele tee, mille me serveris määrasime (vaadake vastuvõetavaid parameetreid http.get failis server.js):

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

Avage oma õpilaste rakendus. Avage selles fail studentsSlice.js. Importige sinna funktsioon createAsyncThunk thunk'i loomiseks, ning client API päringute saatmiseks serverisse.

Kohe pärast objekti initialState deklareerimist createAsyncThunk abil looge thunk fetchStudents õpilaste nimekirja saamiseks, mis saadab GET-päringu aadressile /fakeServer/students, määratud teie failis server.js, ja tagastab response.data, nagu näidatud õppematerjalides. Esimese parameetrina createAsyncThunk jaoks määrake string students/fetchStudents action'i tüübi jaoks.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu