⊗jsrxPmATGS 51 of 57 menu

การรับข้อมูลผู้ขายใน Redux

มาเริ่มต้นแอปพลิเคชันของเราที่มี สินค้ากัน เราจะเห็นว่าในการ์ดสินค้า ไม่ได้แสดงข้อมูลผู้ขาย มาดึงข้อมูลนั้น จากเซิร์ฟเวอร์และแสดงผลกัน ในการทำเช่นนี้ เราจะต้องดำเนินการตามลำดับขั้นตอนที่คุ้นเคย

เริ่มต้นด้วยการเปิดไฟล์ server.js ค้นหา อาร์เรย์ handlers และเพิ่มการจัดการ GET request อีกหนึ่งรายการ (หลังจากจัดการ GET สำหรับสินค้า) อย่างที่เห็น มันเกือบจะ เหมือนกันทุกประการ:

http.get('/fakeServer/sellers', async () => { await delay(ARTIFICIAL_DELAY_MS) return HttpResponse.json(db.seller.getAll()) }),

เราได้จัดการ request บนเซิร์ฟเวอร์แล้ว ขั้นตอนต่อไป เราต้องเขียน thunk สำหรับรับข้อมูลจาก เซิร์ฟเวอร์ในไฟล์ sellersSlice.js ในการนี้ ให้ import client และ createAsyncThunk เข้ามา:

import { createSlice, createAsyncThunk } from '@reduxjs/toolkit' import { client } from '../../api/client'

ตอนนี้เราจะรับข้อมูลผู้ขายจากเซิร์ฟเวอร์ ดังนั้นให้ลบพวกเขาออกจาก initialState โดยเหลือไว้ เพียงวงเล็บว่างเปล่า:

const initialState = []

จากนั้นก่อนฟังก์ชัน sellersSlice ให้สร้าง thunk fetchSellers ของเรา เรา จะส่งพาธที่เราระบุไว้บน เซิร์ฟเวอร์ให้กับไคลเอนต์:

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

สิ่งที่เราต้องทำเหลือเพียงแค่สร้าง reducer เพิ่มเติม สำหรับ sellersSlice เราจะจำกัดไว้ที่ การจัดการ request ที่สำเร็จเท่านั้น action ทั้งหมด ที่สร้างโดย fetchSellers จะเหมือนกันทุกประการ กับ action ของ fetchProducts:

const sellersSlice = createSlice({ name: 'sellers', initialState, reducers: {}, extraReducers(builder) { builder.addCase(fetchSellers.fulfilled, (state, action) => { return action.payload }) }, })

จำได้ไหมว่าคราวก่อนเมื่อรับข้อมูลสินค้า เราได้เปลี่ยนค่าปัจจุบันของ state ในที่นี้เรา ใช้วิธีการที่แตกต่างออกไปเล็กน้อยและเพียงแค่ ส่งคืนค่าใหม่ ซึ่งใน createSlice ก็สามารถทำได้เช่นกัน ด้วยวิธีนี้เราบรรลุเป้าหมายสองประการ ประการแรก เราได้รับข้อมูล และประการที่สอง ตอนนี้ เรามีการรับประกันว่าในรายชื่อผู้ขายจะไม่ ปรากฏสิ่งอื่นใดเพิ่มเติม เพราะเราได้เขียนทับ slice ทั้งหมด ด้วยค่า action.payload

เปิดแอปพลิเคชันนักเรียนของคุณ เปิดไฟล์ server.js ในนั้น เพิ่ม handler อีกหนึ่งตัวสำหรับ GET request ของอาจารย์เข้าไปในอาร์เรย์ handlers

ตอนนี้เปิดไฟล์ teachersSlice.js ทำให้ initialState เป็นอาร์เรย์ว่าง ดังที่แสดงในบทเรียน ก่อนฟังก์ชัน studentsSlice ให้เขียน thunk fetchTeachers

ในฟังก์ชัน createSlice ให้เขียน extra reducer เพิ่ม เขียนเฉพาะ การจัดการ request ที่สำเร็จ

ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ