⊗jsrxPmATInr 45 of 57 menu

Redux-də Thunks-lərə Giriş

Əvvəlki fəsildə biz məlumat mübadiləsi üçün server, verilənlər bazası və klientin işini təşkil etdik. İndi bizə, bizim 'sinxron' təşkil olunmuş Redux tətbiqimizin əvvəlki fəslin son dərsində yaratdığımız asinxron klientlə qarşılıqlı əlaqə qurması, sorğular göndərməsi və cavabda lazımi məlumatları əldə etməsi üçün son körpünü qurmaq lazımdır.

Əvvəlki bölmənin ilk dərslərindən xatırladığımız kimi, Redux asinxron məntiqlə işləməyi bilmir və bunun üçün biz thunk middleware işlədəcəyik. Bu middleware göndərilmiş actions-larla işləməyə, thunk kodumuzda store-un dispatchgetState metodlarından istifadə etməyə, həmçinin dispatch metoduna adi JS obyektləri ilə yanaşı, funksiyalar və promislər kimi varlıqlarla işləməyə kömək edir.

Adətən thunk-funksiyası iki arqumentlə çağırılır dispatchgetState (lazım olduqda), bu funksiyanın daxilində onlardan istifadə etmək olar. Onun vasitəsilə adi actionlar göndərmək olar. Həmçinin onu store.dispatch vasitəsilə göndərmək olar. Belə bir funksiyanın nümunəsi aşağıda göstərilib:

const changeColorThunk = (dispatch, getState) => { const colorBefore = getState() console.log(`Köhnə Rəng: ${colorBefore.color}`) dispatch(changeColor()) const colorAfter = getState() console.log(`Yeni Rəng: ${colorAfter.color}`) } store.dispatch(changeColorThunk)

Gəlin indi məhsullarla olan tətbiqimizi açaq. Tətbiqi işə saldıqda serverdən əldə etməli olduğumuz ilk şey məhsul siyahısıdır. Thunks-lər adətən slice fayllarında yazıldığı üçün, biz productsSlice.js faylını açaq.

Sevindirici xəbər odur ki, bizə Redux Thunk qurmaqla məşğul olmaq lazım deyil, çünki RTK-dan olan configureStore funksiyası bunu artıq bizim üçün edəcək. Buna görə də faylda importa sadəcə createAsyncThunk əlavə edək:

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

Gəlin importa klienti də əlavə edək:

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

İndi isə createAsyncThunk köməyi ilə məhsulları əldə etmək üçün ilk thunk-ımızı yaradaq, bunu initialState obyektinin elanından dərhal sonra edək:

export const fetchProducts = createAsyncThunk()

createAsyncThunk-ın birinci parametri yaradılan action üçün tip kimi sətri qəbul edəcək, ikincisi isə payload üçün kolbek-funksiyası olacaq, nəticədə o, ya məlumatları, ya da xəta ilə promisi qaytaracaq (client.js faylına baxın). Funksiya kodunda biz client.get çağırırıq və ona serverdə göstərdiyimiz yolu ötürürük (server.js faylında http.get-ın qəbul etdiyi parametrlərə baxın):

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

Tələbələrlə olan tətbiqinizi açın. Orada studentsSlice.js faylını açın. Oraya thunk yaratmaq üçün createAsyncThunk funksiyasını, həmçinin serverə API sorğuları göndərmək üçün client import edin.

initialState obyektinin elanından dərhal sonra createAsyncThunk köməyi ilə tələbələrin siyahısını əldə etmək üçün fetchStudents thunk-ını yaradın, o, server.js faylında göstərdiyiniz /fakeServer/students ünvanına GET-sorğusu göndərəcək və dərs materiallarında göstərildiyi kimi response.data qaytaracaq. createAsyncThunk üçün birinci parametr kimi action tipi üçün students/fetchStudents sətirini göstərin.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČ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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et