⊗jsrxPmATDT 54 of 57 menu

Odesílání dat pomocí thunk v Redux

V minulé lekci jsme probrali zpracování POST požadavku na našem falešném serveru. Pojďme nyní napsat thunk funkci, která bude odesílat požadavek na server.

Otevřeme naši aplikaci s produkty, a v ní soubor productsSlice.js. Nyní po thunk fetchProducts pomocí createAsyncThunk vytvoříme thunk addProduct:

export const addProduct = createAsyncThunk()

Jako první parametr předáme do createAsyncThunk 'products/addProduct', a jako druhý asynchronní callback, který bude přijímat objekt s daty nového produktu:

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

V kódu tohoto callbacku zavoláme klienta, předáme mu parametry cestu a objekt s produktem, a poté vrátíme data odpovědi:

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

Nyní níže v kódu se podíváme na pole reducers pro productsSlice. Dříve jsme přidávali nový produkt pomocí reduceru productAdded, ve kterém jsme měli metody reducer a prepare. Nyní generujeme potřebná data na serveru a pracujeme s thunk, proto zde úplně odstraníme reducer productAdded z kódu. A poté přidáme do metody extraReducers (na konec jeho kódu) další dodatečný reducer, který v případě úspěšného požadavku přidá do slice products nový produkt přímo z payload akce (pamatujeme, že takový kód je možný pouze díky jedinečnému createSlice):

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

Ano, mimochodem, nezapomeňte odstranit nanoid z řádků s importem, a productAdded z exportu akcí na konci souboru.

Otevřete vaši aplikaci se studenty. Otevřete v ní soubor studentsSlice.js. Pomocí createAsyncThunk vytvořte další thunk addStudent, který bude odesílat POST požadavek na server, aby přidal nového studenta, jak je ukázáno v lekci.

Dále níže proveďte změny pro studentsSlice: úplně odstraňte reducer studentAdded ve vlastnosti reducers. A v poli extraReducers přidejte dodatečný reducer, který bude přidávat nového studenta do slice students z payload akce v případě úspěšného požadavku, jak je ukázáno v lekci.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout