2016-06-08 7 views

Antwort

13

Dies geschieht, weil der Schlüssel 'selector' einen nicht-Map-Wert hat. setIn wird funktionieren, wenn wir sicherstellen, dass der Wert für 'selector' auch eine unveränderliche Karte ist:

var map1 = Immutable.Map({ 'selector': Immutable.Map({ 'type': 'bar' })}); 
 
var map2 = map1.setIn(['selector', 'type'], 'foo'); 
 
console.log(map1.toJS()); 
 
console.log(map2.toJS());
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.js"></script>

zu tief JavaScript-Objekte und Arrays zu Karten und Listen konvertieren Sie fromJS() verwenden können. So können Sie noch einfacher schreiben:

var map3 = Immutable.fromJS({ 'selector': { 'type': 'bar' }}); 
 
var map4 = map3.setIn(['selector', 'type'], 'foo'); 
 
console.log(map3.toJS()); 
 
console.log(map4.toJS());
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.js"></script>

+0

Also, wenn ich ein tief verschachteltes Objekt, dass ich Änderungen vornehmen möchte ich rekursiv manuell jeder Ebene der Verschachtelung Karte müssen? Dies scheint ein bisschen, na ja, umständlich tbh. – hally9k

+0

Das war zur Veranschaulichung. Sie können ['fromJS()'] (https://facebook.github.io/immutable-js/docs/#/fromJS) verwenden, um JavaScript-Objekte und -Arrays tief in Maps und Listen zu konvertieren. – 1983

Verwandte Themen