2017-10-12 46 views
0

在我的React應用程序中對Redux使用Immutable JS時遇到問題。下面是我創建的示例代碼:爲什麼不可變的映射順序在任何鍵被刪除時改變?

const entry1 = {id: 1, name: 'Entry 1'} 
const entry2 = {id: 2, name: 'Entry 2'} 
const entry3 = {id: 3, name: 'Entry 3'} 
const entry4 = {id: 4, name: 'Entry 4'} 
const entry5 = {id: 5, name: 'Entry 5'} 

const entries = Immutable.Map({1: entry1, 2: entry2, 3: entry3, 4: entry4, 5: entry5}) 
const updatedEntries = entries.delete('3') 

// First Console Log 
console.log(entries.valueSeq().toJS()) 

// Second Console Log 
console.log(updatedEntries.valueSeq().toJS()) 

在我的第一個控制檯日誌,順序是正確的:1,2,3,4,5。但在我的第二個控制檯日誌中,訂單被搞亂了,它變成:1,2,5,4。

任何想法我的代碼有什麼問題?

回答

1

Map不保證順序。如果你想保持它以相同的順序,你應該使用OrderedMap

OrderedMap

A型地圖具有額外保障,在項目的迭代順序將它們被順序set()

+0

它的工作原理非常感謝您的幫助,如果我們在OrderedMap中使用合併,我們必須使用toOrderedMap()來確保輸出不會轉換爲Map。 – mario

相關問題