⊗jsrxPmATDT 54 of 57 menu

Додаҳоҳоро бо истифода аз thunk дар Redux фиристодан

Дар дарси гузашта мо бо коркарди дархости POST дар сервери муваққатии худ шинос шудем. Биёед ҳоло функсияи thunk-ро нависед, ки дархост ба сервер мефиристад.

Барномаи мо бо маҳсулотро кушед, ва дар он файли productsSlice.js. Ҳоло пас аз thunk-и fetchProducts мо бо ёрии createAsyncThunk thunk-и addProduct-ро эҷод мекунем:

export const addProduct = createAsyncThunk()

Якумин параметрро мо ба createAsyncThunk 'products/addProduct' мефиристем, ва дуюмро callback-и асинхронӣ, ки объект бо додаҳои маҳсулоти навро қабул мекунад:

export const addProduct = createAsyncThunk( 'products/addProduct', async (newProduct) => {} )

Дар коди ин callback мо клиентро даъват мекунем, ба он роҳ ва объекти бо маҳсулотро параметрҳо мефиристем, ва сипас додаҳои ҷавобро бармегардонем:

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

Ҳоло дар поёни код ба майдони reducers барои productsSlice нигарем. Пештар мо маҳсулоти навро бо ёрии редюсери productAdded илова мекардем, ки дар он усулҳои reducer ва prepare доштем. Ҳоло мо додаҳои заруриро дар сервер ҳосил мекунем ва бо thunk кор мекунем, аз ин рӯ дар ин ҷо комилан редюсери productAdded-ро аз код тоза мекунем. Ва сипас ба дар усули extraReducers (дар охири коди он) якум дигар редюсери иловагӣ мегузорем, ки дар сурати дархости муваффақона дар слайси products маҳсулоти навро рост аз payload экшн илова мекунад (дар хотир доред, ки ин код имконпазир аст танҳо ба сабаби createSlice-и беназир):

.addCase(addProduct.fulfilled, (state, action) => { state.products.push(action.payload) })

Бале, ҳамин тавр, фаромӯш накунед, ки nanoid-ро аз сатрҳои воридот тоза кунед, ва productAdded аз содироти экшенҳо дар охири файл.

Барномаи худро бо донишҷӯён кушед. Дар он файли studentsSlice.js-ро кушед. Бо ёрии createAsyncThunk thunk-и дигарро addStudent эҷод кунед, ки дархости POST-ро ба сервер мефиристад, то донишҷӯи навро илова кунад, ҳамон тавре ки дар дарс нишон дода шуд.

Баъдтар дар поён тағиротҳоро барои studentsSlice ворид кунед: редюсери studentAdded-ро комилан дар хосияти reducers тоза кунед. Ва дар майдони extraReducers редюсери иловагиеро илова кунед, ки донишҷӯи навро ба слайси students аз payload экшн дар сурати дархости муваффақона илова мекунад, ҳамон тавре ки дар дарс нишон дода шуд.

Тоҷикӣ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČ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
Мо барои коркарди сомона, таҳлил ва шахсӣ кардан аз cookie истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан