Immutable.js以及如何用新列表替换列表

时间:2016-10-30 05:04:46

标签: immutable.js

所以,我有一个默认的不可变列表:

var someObject = Immutable.Map({
   myList: Immutable.List([4,5,6,7])
})

现在,我允许一个人覆盖这个列表,但我仍然需要它包含在" someObject"中。基本上,如果用户提供数组,我们用这个" new List"替换myList中的内容。我试图这样做,没有运气。

基本上,如果这个newList存在,请使用它 - 如果不存在,请将myList重置为自身或忽略。

//example
var newList = [44444,99999]

                someObject.get('myList')
                    .clear()
                        .set('myList', newList || someObject.get('myList'))

1 个答案:

答案 0 :(得分:0)

这是不可能的,因为immutable.js提供的对象是不可变的 - 这就是他们的观点。

而不是尝试改变someObject,一种完成你尝试做的事情的方法是定义defaultList = Immutable.List(4, 5, 6, 7),然后在之后构建someObject 用户输入了他们的列表。

的内容
if (userList) {
    someObject = Immutable.Map({myList: Immutable.List(userList)})
} else {
    someObject = Immutable.Map({myList: Immutable.List(defaultList)})
}