簡體   English   中英

如何使用Redux中的級聯更新來建模相互依賴的數據?

[英]How can I model interdependent data with cascading updates in Redux?

例如,假設我在頁面上有兩個單獨的項目列表。 也許我們是從比薩店和子店訂購的。

  • 清單1 - 食物類型 - 比薩,子
  • 清單2 - 調味品 - 生菜(僅限子菜),洋蔥(兩者),鳳尾魚(僅限比薩餅)

我有兩個單獨的縮減器,用於跟蹤列表1和列表2中的選定項目。

假設用戶選擇了Pizza和Anchovies,但決定他寧願擁有Sub。 他切換了他的選擇並調度了一個動作以更新foodType減速器。 調味品減速機如何意識到這一點?

我看到兩種可能的解決方案,但兩者都存在缺陷。

我可以在兩個Reducer中聽取FOOD_TYPE_CHANGED動作,並且假設還需要一些額外的計算,還可以在調味品減速器中計算新的食物類型,這樣兩者就不需要直接相互了解。 當然這是多余的,但它也存在另一個問題。 讓我們說第三個列表取決於調味品的選擇。 我們現在還必須聽FOOD_TYPE_CHANGED並在這里計算foodType和調味品嗎? 我們可以永久地擴展這個概念,並且它會繼續變得更加復雜。

我可以將它們組合成一個減速器,並在更高的層次上處理兩者之間的相互作用。 但是說我有一個復雜的應用程序不僅有兩個,而是十個相互依賴的狀態。 這種方法似乎會很快變得毛茸茸,並且在縮放時並不能簡化任何事情。

有沒有更好的方法來處理這種情況?

這是一個非常常見的問題。 請記住,減速器只是功能 - 您可以根據需要隨意組織它們。 您可以將更多邏輯放入動作創建器中,並在動作中傳遞所需的“其他分支”數據; 你可以結合減速器; 您可以編寫一個更“手動”的頂級combineReducers()器,而不是使用combineReducers() ,並將另一個分支作為附加參數傳遞給子combineReducers()器等。請參閱Redux問題#749的討論:更新依賴的最佳實踐狀態樹的不同分支? 進一步的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM