Как лучше всего добавить список в список в Immutable.js?
concat метод работает, но другой способ не работает.
const a = fromJS([
{
comment: 'aaaa',
who: 'a1',
buttonInfo: ['a', 'b', 'c'],
},
{
comment: 'bb',
who: 'a2',
buttonInfo: ['a', 'b', 'c'],
},
]);
const b = fromJS([
{
comment: 'ccc',
who: 'c1',
buttonInfo: ['a', 'b'],
},
{
comment: 'ddd',
who: 'd2',
buttonInfo: ['a''],
},
]);
Это работает:
a.concat(b)
Но это не работает:
[...a ,...b]
// or
b.map(v => {
a.push(v);
})



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В списке ImmutableJS есть метод с именем concat, поведение которого такое же, как у обычного массива javascript. Однако вы не можете использовать синтаксис распространения для неизменяемого массива.
Также синтаксис push отличается от обычного массива, push как concat с Immutable List возвращает новый список, ваш метод карты будет выглядеть как
b.map(v => {
a = a.push(v);
})
P.S. Using the above method though will mutate your array
a. You must create a new List and then push both the array contents into it if you want to use push. Howeverconcatis the best way for your case
вы можете использовать метод concat, как сказано в документе:
const list1 = List([ 1, 2, 3 ]);
const list2 = List([ 4, 5, 6 ]);
const array = [ 7, 8, 9 ];
const list3 = list1.concat(list2, array);
// List [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]Для добавления списка в список в Immutable.js вы можете использовать метод merge.
Пример:
const a = fromJS(
[
{
comment: 'aaaa',
who: 'a1',
buttonInfo: ['a', 'b', 'c'],
},
{
comment: 'bb',
who: 'a2',
buttonInfo: ['a', 'b', 'c'],
},
]
);
const b = fromJS(
[
{
comment: 'ccc',
who: 'c1',
buttonInfo: ['a', 'b'],
},
{
comment: 'ddd',
who: 'd2',
buttonInfo: ['a''],
},
]
);
a.merge(b);
зависит от того, что вы хотите. Вы можете использовать как объединение, так и объединение. Причина: «Immutable.js может обрабатывать любой массив или объект JavaScript как коллекцию». В принципе, вы также можете проверить: github.com/rtfeldman/seamless-immutable