Trong ứng dụng React/Redux của tôi, tôi thường phải đối mặt với vấn đề triển khai các thành phần có trạng thái nên được sử dụng trong suốt ứng dụng. Hãy lấy thành phần bật lên đơn giản làm ví dụ với trạng thái mở/đóng có thể được sử dụng lại trong bất kỳ trang nào. Dưới đây là hai cách tiếp cận có thể tôi thấy:Các thành phần thùng chứa phản ứng-redux tái sử dụng
Sử dụng
setState
và "địa phương" giảm tốc (tôi sử dụng recompose.withReducer đó là đường chỉ cú pháp cho Phản ứng của mẹ đẻsetState
) để quản lý trạng thái của nó. Nó trông dễ dàng và tái sử dụng cho đến khi bạn cần thay đổi trạng thái của thành phần trong phần khác của trang của bạn (đóng cửa sổ bật lên trong trường hợp xuất hiện). Và bạn không thể chỉ gọi một số hành động redux để thay đổi trạng thái.Giữ trạng thái của thành phần trong cửa hàng Redux. Với cách tiếp cận như vậy chúng ta có thể gọi
closePopupAction({ id })
ở bất kỳ vị trí nào của cây thành phần để thay đổi trạng thái của nó.` Nhưng chúng ta cần bằng cách nào đó đặt bộ giảm tốc của nó (mà tôi muốn giữ trong thư mục của popup) vào bộ giảm gốc khi thành phần được gắn kết và xóa nó khi thành phần chưa được lắp. Thêm vào đó, chúng tôi có thể có nhiều cửa sổ bật lên trong trang và mỗi quảng cáo có trạng thái riêng.
Có ai phải đối mặt với vấn đề tương tự không?
Tôi không chắc chắn những gì bạn đang yêu cầu. Bạn đang hỏi giải pháp nào tốt hơn giải pháp kia? – wuct
cả hai cách đều không hoạt động. Vì vậy, tôi đang tìm kiếm một cái gì đó khác –
Bạn có thể xây dựng những gì bạn muốn đạt được? Tôi tin rằng cả hai cách đều hoạt động. Trong trường hợp 'recompose', nếu bạn muốn gọi' setState' trong các subtrees khác, bạn có thể nâng 'withState()' lên nút cao hơn. Trong trường hợp 'redux', không cần phải loại bỏ bộ giảm tốc, trừ khi trạng thái cực kỳ lớn. – wuct