【问题标题】:Why Immutable Map Order Changed When Any Keys Deleted?为什么删除任何键时不可变映射顺序会更改?
【发布时间】:2017-10-12 04:21:50
【问题描述】:

在我的 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。

知道我的代码有什么问题吗?

【问题讨论】:

    标签: reactjs redux immutable.js


    【解决方案1】:

    Map 不保证订单。如果你想保持相同的顺序,你应该使用OrderedMap

    OrderedMap

    一种 Map 类型,具有额外保证条目的迭代顺序将是它们被设置的顺序()

    【讨论】:

    • 它可以工作了,谢谢你的帮助,还需要提一下,如果我们在 OrderedMap 中使用 merge,我们必须使用 toOrderedMap() 来确保输出不会转换为 Map。
    • @mario 他们没说in the docs,你确定需要它吗?
    猜你喜欢
    • 2018-07-28
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2017-08-18
    • 2018-06-13
    相关资源
    最近更新 更多