Tôi đã bắt đầu tìm hiểu về Redux và React trong thế giới web và càng tìm hiểu về nó, tôi càng nhận ra việc quản lý trạng thái đau đớn như thế nào trong thế giới máy tính để bàn với kiến trúc kiểu MVVM của WPF (đặc biệt sử dụng Caliburn để ràng buộc Lượt xem để ViewModels).
Redux có một vài nguyên tắc đơn giản chỉ ra cách quản lý trạng thái, thực hiện cập nhật giao diện người dùng, xử lý sự kiện và thay đổi trạng thái dễ dự đoán hơn nhiều. Các nguyên tắc là:
- Một nguồn sự thật duy nhất (tất cả trạng thái có thể thay đổi được lưu trữ trong một đối tượng chia sẻ duy nhất).
- Nhà nước là chỉ đọc. Nó không thể được sửa đổi bởi các thành phần thông qua mã, thường là những gì xảy ra trong WPF.
- Nhà nước chỉ có thể được sửa đổi bởi các chức năng thuần túy.
Kiến trúc MVVM của WPF cho phép bạn xây dựng các khung nhìn tương tác rất nhanh, nhưng việc gỡ lỗi các vấn đề khi các chế độ xem và sự kiện khác nhau đều thay đổi trạng thái là một cơn ác mộng. Ví dụ: một sự kiện được kích hoạt đã thay đổi chế độ xem và cố gắng đặt tab mặc định, nhưng dữ liệu chưa tải xong không đồng bộ từ dịch vụ web để tab không tồn tại (chưa) nên không có gì xảy ra
Tôi đã dành hàng giờ để vẽ sơ đồ để thử và hiểu các tương tác phức tạp giữa các thành phần viewModels liên quan đến nhau cập nhật lẫn nhau.
Tôi hiểu rằng Redux nhằm mục đích giải quyết một số tình trạng khó lường này. Có một cái gì đó tương tự, hoặc một mô hình kiến trúc sẽ phù hợp với WPF để giúp quản lý trạng thái tốt hơn? Tôi không chắc các nguyên tắc Redux sẽ hoạt động tốt như thế nào trong .NET vì tôi chưa thử chúng. Có lẽ ai đó có một số kinh nghiệm có thể đưa ra một số lời khuyên?