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>
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
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