2017-10-12 45 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

相关问题