⊗jsrxPmATInr 45 of 57 menu

Utangulizi wa Thunks katika Redux

Katika sura iliyopita tuliandaa utendakazi wa serveri, hifadhidata na mteja wa kubadilishana data. Sasa tunahitaji kuweka daraja la mwisho ambalo litasaidia programu yetu ya Redux 'iliyopangwa kwa synchronic' kuingiliana na mteja wa asynchronous, ambalo tuliunda kwenye somo la mwisho la sura iliyopita, ili kutuma maombi na kupata data inayohitajika kwenye jibu.

Kama tunavyokumbuka kutoka kwa masomo ya kwanza ya sehemu iliyopita, Redux haijui chochote kuhusu kufanya kazi na mantiki ya asynchronous na kwa hili tutatumia thunk middleware. Middleware hii inaturuhusu kufanya kazi na actions zilizotumwa, kutumia katika msimbo wetu wa thunk dispatch na getState mbinu za duka, na pia kusaidia dispatch mbinu kufanya kazi sio tu na vitu vya kawaida vya JS, lakini pia na huluki kama vile vitendakazi na ahadi.

Kawaida kitendakazi cha thunk huitwa na hoja mbili dispatch na getState (ikiwa inahitajika), ambazo zinaweza kutumika katika mwili wa kitendakazi hicho. Kwa kutumia hii inaweza kutuma actions za kawaida. Pia inaweza kutumwa kupitia store.dispatch. Mfano wa kitendakazi kama hicho umewasilishwa hapa chini:

const changeColorThunk = (dispatch, getState) => { const colorBefore = getState() console.log(`Old Color: ${colorBefore.color}`) dispatch(changeColor()) const colorAfter = getState() console.log(`New Color: ${colorAfter.color}`) } store.dispatch(changeColorThunk)

Wacha sasa tufungue programu yetu ya bidhaa. Jambo la kwanza ambalo tunapaswa kupata kutoka kwa serveri wakati programu inapozindua - hii ni orodha ya bidhaa. Kwa kuwa kawaida thunks huandikwa kwenye faili za sehemu (slice), basi tutafungua faili productsSlice.js.

Habari njema ni kwamba hatuitaji kuchanganyikiwa na kusanidi Redux Thunk, kwa sababu kitendakazi configureStore kutoka RTK tayari kitafanya hivyo kwa ajili yetu. Kwa hivyo tuongeze createAsyncThunk kwenye usafirishaji kwenye faili:

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

Pia tuongeze kwenye usafirishaji mteja wetu:

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

Na sasa kwa msaada wa createAsyncThunk tuunde thunk yetu ya kwanza ya kupata bidhaa, tufanye hii mara baada ya tangazaji la kitu initialState:

export const fetchProducts = createAsyncThunk()

Kigezo cha kwanza cha createAsyncThunk kitakuwa kinakubali kamba kwa aina ya action inayotokana, na cha pili - kitendakazi cha kolbak kwa ajili ya payload, ambacho mwishowe kitarudisha iwe data, au ahadi na hitilafu (tazama faili client.js). Katika msimbo wa kitendakazi sisi tunaita client.get na tukapeana njia, ambayo tuliainisha kwenye serveri (angalia vigezo vinavyokubaliwa http.get kwenye server.js):

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

Fungua programu yako ya wanafunzi. Fungua ndani yake faili studentsSlice.js. Wasilishe ndani yake kitendakazi createAsyncThunk kwa ajili ya kuunda thunk, na pia client kwa kutuma maombi ya API kwenye serveri.

Mara baada ya tangazaji la kitu initialState kwa kutumia createAsyncThunk unda thunk fetchStudents ya kupata orodha ya wanafunzi, ambayo itatuma ombi la GET anwani /fakeServer/students, iliyoainishwa kwenye faili yako server.js, na kurudisha response.data, kama inavyoonyeshwa kwenye nyenzo za somo. Kama kigezo cha kwanza kwa createAsyncThunk bainisha kamba students/fetchStudents kwa aina ya action.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa