⊗jsrxPmATDS 53 of 57 menu

Pemprosesan Permintaan POST yang Dihantar Menggunakan Thunk dalam Redux

Kita telah mendapat data produk dan penjual dari pelayan dan memaparkannya dalam aplikasi. Tetapi dengan menggunakan thunk, kita boleh bukan sahaja mendapatkan, malah menghantar data. Mari kita pelajari cara untuk melakukannya.

Selepas kita menambah produk baru, ia kekal dalam store kita, iaitu di dalam aplikasi kita. Mari kita buat supaya produk baru disimpan di pelayan.

Mari kita mulakan dengan pelayan. Di sini kita perlu memproses bukan GET, tetapi permintaan POST, kerana data produk sekarang akan dihantar ke pelayan, dan kita akan menyimpannya di sana.

Buka aplikasi produk kita, dan dalamnya fail server.js. Cari array handlers di dalamnya dan tambah satu lagi pemproses untuk permintaan POST. Di sini kita akan menerima badan permintaan juga, oleh itu dalam callback kita mesti luluskan request:

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

Sekarang dalam kurungan keriting tulis kod callback kita. Mula-mula, ekstrak data permintaan dan sekiranya berlaku ralat hantar dari pelayan sambungan yang mengatakan kita gagal menyimpan data dan 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', }, }) } })

Jika data adalah baik, maka kita dalam pangkalan data akan cari penjual berdasarkan id, yang datang dalam permintaan dan masukkan penjual ini ke dalam data (data penjual juga disimpan di pelayan kita ;) ):

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

Seterusnya, dalam pangkalan data, kita akan buat untuk produk ini objek dengan reaksi. Dan sekarang, dengan mempunyai semua medan yang diperlukan untuk produk, cipta dalam pangkalan data produk itu sendiri:

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

Letakkan kelewatan dan dalam baris kod terakhir untuk callback kita kembalikan sambungan dengan produk:

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

Pada ketika ini, kita telah selesai sepenuhnya dengan pelayan dan tidak akan kembali kepadanya.

By the way, satu lagi perkara yang berguna. Selepas baris export const worker = setupWorker(...handlers) anda boleh tambah kod berikut:

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

Dan sekarang anda boleh melihat hasil setiap pemproses yang dijalankan dalam konsol pelayar.

Sudah tentu pelayan kita bukan yang sebenar dan jika kita secara paksa menyegarkan halaman dalam pelayar, semua objek baru kita dengan produk akan hilang.

Buka aplikasi anda dengan pelajar. Buka fail server.js di dalamnya. Tambahkan ke dalam array handlers pemprosesan untuk permintaan POST. Dalam badan permintaan ini, anda akan menerima data pelajar baru yang ditambah.

Dalam badan callback untuk http.post anda, uraikan data dan sekiranya berlaku ralat, hantar sambungan yang sesuai.

Jika semuanya ok, maka cari dalam pangkalan data pensyarah berdasarkan id yang diterima dan masukkan beliau ke dalam data. Juga masukkan ke dalam data, objek votes yang dicipta berdasarkan pangkalan data.

Berdasarkan data yang dikumpulkan, cipta objek student dengan pelajar baru dan hantarnya dalam sambungan pelayan.

Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak