[英]How can I model interdependent data with cascading updates in Redux?
例如,假設我在頁面上有兩個單獨的項目列表。 也許我們是從比薩店和子店訂購的。
我有兩個單獨的縮減器,用於跟蹤列表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.