ฉันเริ่มเรียนรู้เกี่ยวกับ Redux และ React ในเว็บโลกและยิ่งฉันเรียนรู้มากเท่าไหร่ฉันก็ยิ่งรู้ว่าการจัดการสถานะเจ็บปวดในเดสก์ท็อปโลกด้วยสถาปัตยกรรมสไตล์ MVVM ของ WPF (โดยใช้ Caliburn โดยเฉพาะเพื่อผูกมัด Views ไปยัง ViewModels)
Redux มีหลักการง่ายๆสองสามข้อที่บอกให้ทราบว่ารัฐควรจัดการอย่างไรการปรับปรุง UI การจัดการเหตุการณ์และการเปลี่ยนแปลงสถานะสามารถคาดการณ์ได้มากขึ้น หลักการคือ:
- แหล่งความจริงเดียว (สถานะที่ไม่แน่นอนทั้งหมดจะถูกเก็บไว้ในวัตถุที่ใช้ร่วมกันเดียว)
- สถานะเป็นแบบอ่านอย่างเดียว มันไม่สามารถแก้ไขได้โดยส่วนประกอบผ่านรหัสซึ่งมักจะเกิดขึ้นใน WPF
- สถานะสามารถแก้ไขได้โดยฟังก์ชันบริสุทธิ์เท่านั้น
สถาปัตยกรรม MVVM ของ WPF ช่วยให้คุณสามารถสร้างมุมมองแบบโต้ตอบได้อย่างรวดเร็ว แต่การดีบักปัญหาเมื่อ viewmodels และเหตุการณ์ต่าง ๆ เปลี่ยนสถานะทั้งหมดเป็นฝันร้าย ตัวอย่างเช่นเหตุการณ์ที่ทำให้เกิดการเปลี่ยนแปลงมุมมองและพยายามตั้งค่าแท็บเริ่มต้น แต่ข้อมูลยังไม่เสร็จสิ้นการโหลดแบบอะซิงโครนัสจากเว็บเซอร์วิสดังนั้นแท็บจึงไม่มีอยู่ (ยัง) จึงไม่มีอะไรเกิดขึ้น
ฉันใช้เวลาหลายชั่วโมงในการวาดไดอะแกรมเพื่อลองและทำความเข้าใจกับการโต้ตอบที่ซับซ้อนระหว่างองค์ประกอบ viewModels ที่เกี่ยวกับอินเตอร์ที่อัปเดตกัน
ฉันเข้าใจว่า Redux ตั้งเป้าหมายที่จะแก้ปัญหาความไม่แน่นอนในเรื่องนี้ มีบางอย่างที่คล้ายกันหรือรูปแบบสถาปัตยกรรมที่เหมาะกับ WPF เพื่อช่วยจัดการสถานะให้ดีขึ้นหรือไม่? ฉันไม่แน่ใจว่าหลักการ Redux จะทำงานได้ดีเพียงใดใน. NET เนื่องจากฉันยังไม่ได้ลองใช้ บางทีใครบางคนอาจมีประสบการณ์ที่สามารถให้คำแนะนำได้บ้าง?