我們如何處理財產狀態變化影響另一財產狀態的情況?處理影響另一個財產狀態的財產
下面是可能有助於闡明我試圖解決的問題的實際情況。
我有一個通用的日期選擇器組件,可以作爲一個完全獨立的組件使用,也可以「鏈接」到日期選擇器的另一個實例。
我每次需要用戶設置兩個日期時,都會使用這種「鏈接」方法,例如開始和結束日期。這個想法是,當用戶設置開始日期時,我想禁用用戶剛剛在第二個日期選擇器中設置的開始日期之前的所有日期。這樣,用戶不會意外設置開始日期之前的結束日期。
每個日期選擇器都是我的reducer中的一個對象,具有一些屬性。所以它看起來是這樣的:
datePickers: {
"startDatePicker": {
activeDate: "8/24/2017",
disableBefore: "",
disableAfter: ""
},
"endDatePicker": {
activeDate: "8/25/2017",
disableBefore: "8/24/2017", // Notice that the disableBefore is set to the active date in startDatePicker
disableAfter: ""
}
}
中的對象設置屬性的值是很容易的,但我遇到了一個有趣的問題。
正如我所說的,我的日期選擇器可以用作單個和獨立的日期選擇器,在這種情況下,我們不會設置另一個日期選擇器實例的禁用日期。
問題是,無論何時我使用「鏈接」實例並嘗試設置第二個日期選擇器的禁用日期,用於設置日期的操作在帶有未鏈接日期選擇器的減速器中創建問題。由於所有減法器都對同一動作作出響應,因此具有日期選取器的獨立實例的減速器仍會響應該動作並嘗試設置不存在的日期選取器的禁用日期。
我的一個想法是在減速器中使用一個條件,但我確實覺得這是一個壞主意。這是我問這個問題的地方,我同意答案。 Conditions in reducers
我想出了一個想法,但我更喜歡你的想法。我正在考慮顛倒邏輯 - 就像在依賴倒置一樣。我將禁用日期存儲在第一個日期選擇器中,並讓第二個日期從第一個日期選擇器讀取其數據。我對我的方法並不滿意的是,我將第二個日期選擇器中的數據保留在第一個不太直觀的數據中。你的更直接。謝謝! – Sam
我想我跳過這個槍。我不明白這是如何解決我的問題的。我已經有辦法控制何時致電我的動作創建者設置禁用日期。問題發生在我合法地調用SET_DISABLED_DATES時,所有的縮減器都響應,但並不是所有的都有指定的datePicker。我在這裏看到的唯一解決方案是在執行'Object.assign()'之前有一個條件來確保指定的日期選擇器已被定義。這裏有一個新問題,我發佈了更多的細節:https://stackoverflow.com/questions/45889793/reducer-behavior – Sam