Si je comprends bien la question, vous souhaitez retourner collection
avec le premier élément comme suit :
{
id : 1,
subList: [
{name: "élément de sous-liste"}
]
}
Pour ce faire, nous devrons apporter quelques modifications.
-
Utilisez Immutable.fromJS
pour convertir profondément le tableau JS simple d'objets en une Liste Immutable de Maps
-
Utilisez List.update()
pour retourner une nouvelle List
avec la valeur mise à jour
-
Utilisez Map.updateIn()
pour retourner une nouvelle Map avec la valeur mise à jour
Voici le code complet :
const List = Immutable.List;
const items = [{
id: 1,
subList: []
},
{
id: 2,
subList: []
},
{
id: 3,
subList: []
}
];
const newItem = {
name: "élément de sous-liste"
};
let collection = Immutable.fromJS(items);
collection = collection.update(0, item => {
return item.updateIn(['subList'], subList => {
return subList.concat(newItem);
});
});
console.log(collection)
Et voici le résultat :
[
{
"id": 1,
"subList": [
{
"name": "élément de sous-liste"
}
]
},
{
"id": 2,
"subList": []
},
{
"id": 3,
"subList": []
}
]
Mise à jour : List.updateIn()
peut utiliser un index comme chemin d'accès, vous pouvez donc simplifier ceci comme suit :
collection = collection.updateIn([0, 'subList'], subList => {
return subList.concat(newItem);
});
Comme ceci :
const List = Immutable.List;
const items = [{
id: 1,
subList: []
},
{
id: 2,
subList: []
},
{
id: 3,
subList: []
}
];
const newItem = {
name: "élément de sous-liste"
};
let collection = Immutable.fromJS(items);
collection = collection.updateIn([0, 'subList'], subList => {
return subList.concat(newItem);
});
console.log(collection)