Supposons qu'il existe un objet:
const object = {
'foo': {
'bar': [1, 2, 3]
}
}
Je dois pousser 4
à object.foo.bar
tableau.
En ce moment, je le fais comme ça:
const initialState = Immutable.fromJS(object)
const newState = initialState.setIn(
['foo', 'bar', object.foo.bar.length],
4
)
console.log(newState.toJS())
Mais je n'aime pas vraiment ça, car j'ai besoin d'utiliser object.foo.bar.length
Sur le chemin. Dans mon exemple réel, l'objet est imbriqué beaucoup plus profondément, et obtenir la longueur du tableau semble très laid. Existe-t-il un autre moyen plus pratique?
Cela devrait fonctionner
initialState.updateIn(['foo', 'bar'], arr => arr.Push(4))
Les références:
J'utilise seamless-immutable
, lorsque j'ajoute un nouvel élément au tableau d'objets imbriqués, j'ai cette erreur:
La méthode Push ne peut pas être invoquée sur une structure de données immuable.
Mon tableau a toujours la méthode Push
, mais cela ne fonctionne pas. La solution est d'utiliser concat à la place, plus de détails sur # 4 :
initialState.updateIn(['foo', 'bar'], arr => arr.concat([4]));
J'espère que cette aide!