2017-09-06 56 views
1

我正在使用React和Redux。我有一個項目像{name: 'Jim', votes: '5', type: 'candidate'}防止反應和重新選擇排序項目

我使用的重新選擇來獲得項目的過濾列表商店。我也使用重新選擇來通過投票排序這個項目列表。

當一個項目被評爲它會自動更改列表中的位置(項目的變化,重新選擇它的工作和重新排序列表)。

我想阻止這種行爲。這可能沒有在州內重新排序?

+0

你必須顯示一些代碼! – Panther

回答

0

的另一種方法可能包括生成數據正常化或物品初始化期間的排序信息。您可以將信息保存到單獨的陣列中,或者只需將sorting propery插入每個項目對象。

以這種方式更新的分數不會與項目排序干擾。

+0

因此,您可以在每個度假村獲取API?或者,也許創建一個正常狀態(無序)和一個有序的狀態,當更改排序選擇器時,它會更新排序屬性。我想我明白了這是可行的 – antoinem

+0

我傾向於第二種選擇。一般來說,數據規範化是做這種操作的好時機。 –

1

我想你可以在Redux狀態中引入一個新屬性,如shouldSort,它初始化爲true。然後,在您的updateVote(newValue)操作(或者您稱之爲的任何操作)中,您讓該操作的縮減器也將shouldSort設置爲false

現在你可以使用shouldSort在重選功能,以確定它是否應該或不應該進行排序。

請注意,您還需要當你進入/離開頁面重置的shouldSort狀態。否則,當您離開並再次進入該頁面時,您可能無法獲得排序列表。

+0

如果'shouldSort'爲false,將不會重新發送未排序的列表(即不再通過選票排序)?也許我必須實現該邏輯+將狀態的先前訂單存儲起來? – antoinem

+0

是的,這可能是正確的..沒有想到這一點。是的,存儲以前的狀態將解決它。但它不像一個非常乾淨的解決方案。 – jonahe

+1

如何讓Redux狀態反映/確定視圖應該如何顯示?所以你重新選擇了圖片。您在默認情況下通過選票對數組進行排序(第一次將數據置於/設置狀態)。那麼當您更改投票時,您只需保持訂單不變。如果您離開並重新進入該頁面,則再次運行「獲取/設置」操作,並對其進行排序(考慮新的投票)。對我來說,感覺更乾淨。但是我也明白爲什麼讓選擇器擔心排序是有意義的,因爲它是某種特定於組件如何處理數據的轉換。 – jonahe