2016-10-30 2 views
0

So habe ich eine Standard Immutable Liste:Immutable.js und wie die Liste mit neuen Liste ersetzen

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

Jetzt erlaube ich eine Person, die diese Liste zu überschreiben, aber ich muss noch innerhalb enthalten sein "irgendeinObjekt". Grundsätzlich, wenn ein Benutzer ein Array liefert, ersetzen wir, was in myList ist, mit dieser "neuen Liste". Ich habe versucht, so zu erreichen, kein Glück.

Im Grunde, wenn diese newList existiert, verwenden Sie sie - wenn nicht, setzen Sie entweder die myList auf sich selbst zurück oder ignorieren sie.

//example 
var newList = [44444,99999] 

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

Antwort

0

Dies ist unmöglich, weil die von immutable.js gelieferten Objekte unveränderlich sind - das ist ihr Punkt.

Anstatt zu versuchen, someobject zu mutieren, einen Weg zu erreichen, was Sie versuchen, eine defaultList = Immutable.List(4, 5, 6, 7) zu tun wäre, zu definieren und bauen dann someObjectnach die Benutzereingabe hat ihre Liste. Etwas in die Richtung von

if (userList) { 
    someObject = Immutable.Map({myList: Immutable.List(userList)}) 
} else { 
    someObject = Immutable.Map({myList: Immutable.List(defaultList)}) 
} 
+0

Ich sehe, was Sie sagen, aber das ist nicht skalierbar .. Ich sollte nicht gegen myList testen, und wenn es nicht existiert, verwenden Sie defaultList. Ich verstehe nicht, wie man das unveränderliche Objekt mit seinen Helfern nicht "einrichten" kann, mit "neuen Daten". Ich habe mit Objekten/Map gearbeitet - updaten und entfernen .. alles was ich damit machen will ".List" ist klar und rehydriere es mit Userdaten. –

Verwandte Themen