อะไรคือความแตกต่างระหว่างตัวลดและมิดเดิลแวร์ใน Redux?

Nov 10, 2025

เฮ้! ในฐานะซัพพลายเออร์ตัวลด ฉันมักจะถูกถามถึงความแตกต่างระหว่างตัวลดและมิดเดิลแวร์ใน Redux เป็นคำถามที่พบบ่อย โดยเฉพาะสำหรับผู้ที่เพิ่งเริ่มใช้ Redux และการจัดการสถานะในแอปพลิเคชัน React เรามาเจาะลึกและแยกย่อยมันด้วยวิธีที่เข้าใจง่ายกันดีกว่า

ลดคืออะไร?

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

สมมติว่าคุณกำลังสร้างแอปรายการสิ่งที่ต้องทำ สถานะของคุณอาจเป็นอาร์เรย์ของรายการสิ่งที่ต้องทำ และการกระทำแต่ละรายการอาจเป็น "เพิ่มสิ่งที่ต้องทำใหม่" "ทำเครื่องหมายสิ่งที่ต้องทำว่าเสร็จสมบูรณ์" หรือ "ลบสิ่งที่ต้องทำ" หน้าที่ของตัวลดคือจัดการกับการกระทำเหล่านี้และอัปเดตสถานะตามนั้น

นี่คือตัวอย่างง่ายๆ ของตัวลดสำหรับแอปรายการสิ่งที่ต้องทำของเรา:

const InitialState = { สิ่งที่ต้องทำ: [] }; const todoReducer = (state = InitialState, action) => { สวิตช์ (action.type) { case 'ADD_TODO': return { ...state, todos: [...state.todos, action.payload] }; กรณี 'DELETE_TODO': return { ...state, todos: state.todos.filter(todo => todo.id!== action.payload) }; ค่าเริ่มต้น: สถานะการส่งคืน; -

ในตัวอย่างนี้ เมื่อเพิ่ม_TODOการดำเนินการถูกส่งไปแล้ว ตัวลดจะใช้สถานะปัจจุบัน กระจายออกไป แล้วเพิ่มรายการสิ่งที่ต้องทำใหม่ให้กับทั้งหมดอาร์เรย์ เมื่อDELETE_ALLการดำเนินการถูกส่งไป โดยกรองรายการสิ่งที่ต้องทำด้วย ID ที่ระบุออก

Titanium Gr7 ReducerZirconium Reducer

ในฐานะซัพพลายเออร์ตัวลด เรานำเสนอตัวลดคุณภาพสูงที่หลากหลาย เช่นตัวลดไทเทเนียม Gr7และตัวลดเซอร์โคเนียม- ตัวลดเหล่านี้ได้รับการออกแบบมาเพื่อจัดการงานการจัดการสถานะที่ซับซ้อนอย่างมีประสิทธิภาพและเชื่อถือได้

มิดเดิลแวร์คืออะไร?

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

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

มิดเดิลแวร์ยอดนิยมสำหรับการจัดการการดำเนินการแบบอะซิงโครนัสคือ Redux Thunk ด้วย Redux Thunk คุณสามารถส่งฟังก์ชันแทนวัตถุธรรมดาเป็นการดำเนินการได้ ฟังก์ชันเหล่านี้สามารถดำเนินการแบบอะซิงโครนัสและส่งการดำเนินการอื่นๆ เมื่อดำเนินการเสร็จสิ้น

นี่คือตัวอย่างการใช้ Redux Thunk เพื่อทำการเรียก API:

นำเข้า { createStore, ApplyMiddleware } จาก 'redux'; นำเข้า thunk จาก 'redux - thunk'; const InitialState = { ข้อมูล: null, กำลังโหลด: false, ข้อผิดพลาด: null }; const ลด = (สถานะ = InitialState, การกระทำ) => { สวิตช์ (action.type) { กรณี 'FETCH_DATA_REQUEST': กลับ { ... สถานะ, กำลังโหลด: จริง, ข้อผิดพลาด: null }; กรณี 'FETCH_DATA_SUCCESS': ส่งคืน { ... สถานะ, กำลังโหลด: เท็จ, ข้อมูล: action.payload }; กรณี 'FETCH_DATA_FAILURE': ส่งคืน { ... สถานะ, กำลังโหลด: เท็จ, ข้อผิดพลาด: action.payload }; ค่าเริ่มต้น: สถานะส่งคืน; - const store = createStore (ตัวลด, ApplyMiddleware (thunk)); const fetchData = () => { ส่งคืน async (จัดส่ง) => { จัดส่ง ({ ประเภท: 'FETCH_DATA_REQUEST' }); ลอง { const response = await fetch('https://api.example.com/data'); ข้อมูล const = รอการตอบกลับ json(); จัดส่ง ({ ประเภท: 'FETCH_DATA_SUCCESS', เพย์โหลด: ข้อมูล }); } catch (ข้อผิดพลาด) { จัดส่ง ({ ประเภท: 'FETCH_DATA_FAILURE', payload: error.message }); - -

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

ความแตกต่างที่สำคัญ

แล้วอะไรคือความแตกต่างที่สำคัญระหว่างตัวลดและมิดเดิลแวร์?

  1. ฟังก์ชั่นการทำงาน: งานหลักของตัวลดคือการอัปเดตสถานะตามการกระทำ เป็นฟังก์ชันล้วนๆ ที่จะรับสถานะปัจจุบันและการดำเนินการ แล้วส่งคืนสถานะใหม่ ในทางกลับกัน มิดเดิลแวร์ใช้เพื่อสกัดกั้นการดำเนินการและเพิ่มฟังก์ชันการทำงานเพิ่มเติม เช่น การจัดการการดำเนินการแบบอะซิงโครนัสหรือการบันทึก
  2. เวลา: ตัวลดจะถูกเรียกหลังจากส่งการดำเนินการและก่อนที่สถานะจะได้รับการอัปเดต มิดเดิลแวร์จะถูกเรียกก่อนที่การดำเนินการจะไปถึงตัวลด ทำให้สามารถปรับเปลี่ยนการดำเนินการหรือทำงานอื่นๆ ได้
  3. ประเภทของฟังก์ชัน: ตัวลดเป็นฟังก์ชันล้วนๆ ซึ่งหมายความว่าจะส่งคืนเอาต์พุตเดียวกันสำหรับอินพุตเดียวกันเสมอ และไม่มีผลข้างเคียงใดๆ มิดเดิลแวร์อาจเป็นฟังก์ชันที่ไม่บริสุทธิ์ เนื่องจากอาจทำให้เกิดผลข้างเคียงได้ เช่น การเรียก API หรือการบันทึก

ทำไมพวกเขาทั้งสองจึงมีความสำคัญ

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

ในฐานะซัพพลายเออร์ตัวลดขนาด เราเข้าใจถึงความสำคัญของการมีตัวลดคุณภาพสูงที่ทำงานได้ดีกับมิดเดิลแวร์ ของเราตัวลดไทเทเนียม Gr7และตัวลดเซอร์โคเนียมได้รับการออกแบบมาให้เข้ากันได้กับมิดเดิลแวร์ที่หลากหลาย ทำให้มั่นใจได้ว่าแอปพลิเคชันของคุณทำงานได้อย่างราบรื่น

บทสรุป

โดยสรุป ตัวลดและมิดเดิลแวร์ใน Redux มีจุดประสงค์ที่แตกต่างกันแต่เสริมกัน ตัวลดมีหน้าที่รับผิดชอบในการอัปเดตสถานะ ในขณะที่มิดเดิลแวร์ใช้เพื่อสกัดกั้นการดำเนินการและเพิ่มฟังก์ชันการทำงานเพิ่มเติม การทำความเข้าใจความแตกต่างระหว่างสิ่งเหล่านี้เป็นสิ่งสำคัญสำหรับการสร้างแอปพลิเคชัน React ที่แข็งแกร่งและปรับขนาดได้

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

อ้างอิง

  • เอกสารอย่างเป็นทางการของ Redux
  • โต้ตอบเอกสารอย่างเป็นทางการ
  • พื้นที่เก็บข้อมูล Redux Thunk GitHub