⊗jsrxPmATDS 53 of 57 menu

Hantering av POST-förfrågan skickad med thunk i Redux

Vi har hämtat data för produkter och försäljare från servern och visat dem i applikationen. Men med thunk kan man inte bara hämta utan också skicka data. Låt oss ta reda på hur man gör det.

Efter att vi lägger till en ny produkt, förblir den i vår store, det vill säga inuti vår applikation. Låt oss se till att den nya produkten sparas på servern.

Låt oss börja med servern. Här måste vi hantera inte en GET, utan en POST-förfrågan, eftersom data för produkten nu kommer att skickas till servern, och det är dessa vi kommer att spara där.

Öppna vår produktapplikation, och i den filen server.js. Låt oss hitta arrayen handlers i den och lägga till ytterligare en hanterare för POST-förfrågan. Här kommer vi att ta emot även förfrågans body, därför måste vi skicka med request i callback-funktionen:

http.post('/fakeServer/products', async ({ request }) => {})

Nu skriver vi koden för vår callback-funktion inom klammerparenteserna. Låt oss först extrahera förfrågans data och vid fel skicka ett svar från servern om att vi inte kunde spara data och status 500:

http.post('/fakeServer/products', async ({ request }) => { const data = await request.json() if (data.content === 'error') { await delay(ARTIFICIAL_DELAY_MS) return new HttpResponse('server save error', { status: 500, headers: { 'Content-Type': 'application/json', }, }) } })

Om allt är i ordning med data, så hittar vi i databasen försäljaren efter id, som kom till oss i förfrågan och skriver in denna försäljare i data (försäljarens data ligger ju också lagrad på servern ;) ):

const seller = db.seller.findFirst({ where: { id: { equals: data.seller } }, }) data.seller = seller

Därefter skapar vi ett objekt för reaktioner till denna produkt i databasen. Och nu, med alla nödvändiga fält för produkten, skapar vi själva produkten i databasen:

data.reactions = db.reaction.create() const product = db.product.create(data)

Låt oss lägga till en fördröjning och på den sista kodraden för vår callback returnera ett svar med produkten:

await delay(ARTIFICIAL_DELAY_MS) return HttpResponse.json(serializeProduct(product))

Här är vi helt klara med servern och kommer inte att återvända till den.

Förresten, en annan användbar sak. Efter raden export const worker = setupWorker(...handlers) kan du lägga till följande kod:

worker.listHandlers().forEach((handler) => { console.log(handler.info.header) })

Och nu kan du se resultatet av varje hanterares utlösande i webbläsarens konsol.

Naturligtvis är vår server inte riktig och om vi tvingas uppdatera sidan i webbläsaren, försvinner alla våra nya produktobjekt.

Öppna din applikation med studenter. Öppna filen server.js i den. Lägg till i arrayen handlers hantering av en POST-förfrågan. I body för denna förfrågan kommer du att ta emot data för den nya tillagda studenten.

I body för callback för din http.post, packa upp data och vid fel, skicka ett lämpligt svar.

Om allt är ok, hitta i databasen läraren efter det mottagna id:t och skriv in denne i data. Skriv även in i data, ett objekt för votes skapat baserat på databasen.

Utifrån den samlade datan, skapa ett objekt student med den nya studenten och skicka tillbaka den i serverns svar.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa