⊗jsrxPmSDSSC 35 of 57 menu

การเปลี่ยนแปลงโครงสร้างสถานะใน Redux

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

เปิดแอปพลิเคชันผลิตภัณฑ์ของเรา และในนั้น เปิดไฟล์ productsSlice.js โปรดสังเกต นิยาม initialState เดิมที slice ของเรา สำหรับผลิตภัณฑ์ productsSlice - คืออาร์เรย์ซึ่ง ประกอบด้วยอ็อบเจกต์ (ในกรณีของเรามีสองอ็อบเจกต์) ที่มีข้อมูล ของผลิตภัณฑ์ ประการแรก เนื่องจากตอนนี้เราจะ โหลดข้อมูลจากเซิร์ฟเวอร์ เราจึงต้องลบข้อมูลเหล่านี้ออกจาก initialState ประการที่สอง เราจะส่ง คำขอ API ไปยังเซิร์ฟเวอร์ และมันจะสำคัญสำหรับเราที่จะรู้สถานะของคำขอนั้น เมื่อพิจารณาสองสิ่งนี้แล้ว ให้เรา ปรับเปลี่ยน initialState ใหม่ คราวนี้ให้มัน เป็นเพียงอ็อบเจกต์ที่มีคุณสมบัติ products (ในตอนแรกจะไม่มีข้อมูลใด ๆ ที่นี่ แต่ จะเป็นเพียงอาร์เรย์ว่าง), status และ error ตอนนี้โค้ดของเราสำหรับ initialState จะ สั้นลงเล็กน้อย:

const initialState = { products: [], status: 'idle', error: null, }

ในตอนนี้เราตั้งค่าสถานะเป็น 'idle' (ไม่ได้ทำอะไร) เพราะในตอนแรกเราไม่ได้ส่งคำขอใดๆ แต่โดยทั่วไปแล้วมันจะเปลี่ยนแปลงและสามารถ รับค่าได้ เช่น 'กำลังโหลด', 'สำเร็จ', 'ข้อผิดพลาดในการโหลด' โปรดจำไว้ว่า สำหรับการระบุ สถานะ คุณสามารถเลือกชื่อใดก็ได้ที่ สะดวกสำหรับคุณ

เลื่อนลงมาดูโค้ดด้านล่างต่อ หลังจากเปลี่ยนแปลง initialState แล้ว เราต้องเปลี่ยนโค้ดในส่วนที่ เราทำงานกับสถานะนี้ในฟังก์ชันรีดิวเซอร์ด้วย มาดูโค้ดสำหรับ productAdded:

state.push(action.payload)

จากนี้ไป ผลิตภัณฑ์ใหม่เราจะเพิ่ม ไม่ใช่แค่ใน state สำหรับผลิตภัณฑ์ แต่ใน คุณสมบัติ state.products ของมัน ดังนั้น ให้แทนที่บรรทัดด้านบนด้วย:

state.products.push(action.payload)

ดังนั้น ให้ดำเนินการเปลี่ยนแปลงเดียวกัน สำหรับรีดิวเซอร์ reactionClicked แทนที่:

const currentProduct = state.find((product) => product.id === productId)

ตอนนี้จะเป็น:

const currentProduct = state.products.find((product) => product.id === productId)

แทนที่ state ด้วย state.products ด้วยตัวเองในโค้ดของรีดิวเซอร์ productUpdated

เปิดแอปพลิเคชันนักเรียนของคุณ เปิดไฟล์ studentsSlice.js ในนั้น ให้ initialState ของคุณตอนนี้มี คุณสมบัติสามประการ: students, status, error - ปรับเปลี่ยนมันใหม่ ดังที่แสดง ในบทเรียน

ดำเนินการเปลี่ยนแปลงที่สอดคล้องกันและ ในโค้ดด้านล่างด้วย แทนที่ state ด้วย state.students ในโค้ดสำหรับ ฟังก์ชันรีดิวเซอร์ทั้งสามของคุณ

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