Tôi đang sử dụng alt để thực hiện thông lượng cho dự án và đang gặp khó khăn trong việc xử lý các cửa hàng tải cho hai thực thể liên quan. Tôi đang sử dụng tính năng sources cùng với registerAsync để xử lý các cuộc gọi async/api của tôi và liên kết chúng với các chế độ xem của tôi bằng AltContainer.Phụ thuộc dữ liệu Flux/Alt, cách xử lý một cách tao nhã và độc đáo
Tôi có hai thực thể liên quan từ một đến một bởi cuộc hội thoạiId. Cả hai đều được nạp thông qua một cuộc gọi api:
Khi cửa hàng công việc của tôi được nạp với dữ liệu tôi muốn điền vào một cửa hàng trò chuyện.
tôi sử dụng một nguồn để nạp các cửa hàng công việc:
module.exports = {
fetchJobs() {
return {
remote() {
return axios.get('api/platform/jobs');
},....
Có vẻ như một công việc cho các WAITFOR() phương pháp, nhưng có vẻ như để sử dụng khi nội dung của một cửa hàng đòi hỏi một sự chuyển đổi hoặc sáp nhập với nội dung của người khác. Tôi cần tìm nạp nội dung của một kho dữ liệu dựa trên nội dung của một kho dữ liệu khác.
Nói chung tôi cần phải:
- Gọi một bên thứ ba và API tải một danh sách các thực thể vào một cửa hàng.
- Khi dữ liệu đó đến, tôi cần phải sử dụng thuộc tính từ mỗi bên trên để gọi một API khác và tải dữ liệu đó vào một cửa hàng khác.
Giải pháp ngây thơ của tôi là tham chiếu các hoạt động trò chuyện từ cửa hàng việc làm và gửi sự kiện khi dữ liệu đến. Một cái gì đó như thế này:
var jobActions = require('../actions/Jobs');
var conversationActions = require('../actions/Conversations');
class JobStore {
constructor() {
this.bindListeners({
handlefullUpdate: actions.success
});...
}
handlefullUpdate(jobs) {
this.jobs = jobs;
conversationActions.fetch.defer(jobs);
}
}
Tất nhiên, vi phạm nguyên tắc không lưu trữ sự kiện và vì vậy tôi phải trì hoãn gửi một hành động ở giữa công văn. Nó có ý nghĩa đối với tôi, vì dường như đi xuống con đường này tôi đang giới thiệu lại tất cả các loại tác dụng phụ trong mã của tôi; mất đi vẻ đẹp của "đường ống chức năng" mà tôi nên thấy với thông lượng.
Ngoài ra, cửa hàng công việc của tôi phải giữ một tham chiếu đến bất kỳ thực thể phụ thuộc nào để nó có thể gửi hành động thích hợp. Ở đây tôi chỉ có một, nhưng tôi có thể tưởng tượng nhiều. Xét về sự phụ thuộc giữa các thực thể, điều này có vẻ hoàn toàn ngược.
Một vài lựa chọn thay thế tôi suy nghĩ:
Tôi có thể gọi api/nền tảng/công việc endpoint trong nguồn/hành động mà tôi lấy tất cả các cuộc hội thoại, chỉ để có được định danh. Cách tiếp cận ban đầu là hiệu quả hơn, nhưng điều này có vẻ tinh tế hơn với tinh thần thông lượng mà tôi mất tất cả các cuộc nói chuyện chéo.
Tôi cũng có thể có một hành động/nguồn đơn lẻ tìm nạp cả hai, trả lại {jobs:{}, conversations: in the action}
(dàn xếp phụ thuộc ở đó bằng cách sử dụng lời hứa) và sử dụng điều này cư trú cả hai cửa hàng. Nhưng cách tiếp cận này có vẻ phức tạp không cần thiết đối với tôi (tôi cảm thấy mình không nên làm điều đó!).
Nhưng tôi có thiếu một cách khác không? Có vẻ kỳ lạ rằng một trường hợp sử dụng phổ biến như vậy sẽ phá vỡ sự tao nhã của thiên lý thông lượng và/hoặc buộc tôi phải nhảy qua rất nhiều vòng lặp.
@dougajmcdonald đặt ra một câu hỏi tương tự here, nhưng có lẽ nó đã được phrased quá thường, và không nhận được bất kỳ lực kéo:
Tôi sẽ xem xét mã của bạn khi đầu của tôi rõ ràng hơn. Cảm ơn. –
Tôi đã tặng bạn một món quà. Không có ý nghĩa trong những điểm đi xa. –