2016-10-03 4 views
1

Für mich Immutable.js reduziert eine Menge Kopfschmerzen und es ist eine große Bibliothek, aber jetzt mit einem Problem konfrontiert, kommt mein ursprüngliches Objekt vom Server, aber wenn ich eine seiner Funktionen wie fromJS({myObj}) es funktioniert aber speichert eine Kopie aber sortiert "az" und ich mache etwas, das die ursprüngliche Struktur benötigt, um die Komponenten in der Reihenfolge zu halten, die vom Server kommt, jemand eine Idee?Vermeiden Sie das Sortieren mit immutable.js

Antwort

0

Javascript Core-Objekte bieten explizit keine Garantien über die Reihenfolge der Schlüssel. Immutable.Map (das erwartete Ergebnis Ihrer fromJS() Anruf) folgt nur das.

Wenn Sie bestellen möchten, sollten Sie entweder die Reihenfolge als eine andere Eigenschaft für jedes Element angeben oder, konventioneller, erstellen Sie ein Immutable.List von einem Array.

Mit anderen Worten, das klingt wie ein Quadrat Peg/Rundloch Problem. Stellen Sie sicher, dass Sie die richtige Datenstruktur für Ihre Aufgabe verwenden.

+0

ich mit Immutable.List versucht, und ich habe das gleiche Ergebnis, trotzdem danke. Hier ist ein Beispiel [link] (https://jsfiddle.net/normanfx/sdufb9ac/) – Norman

+0

@Norman Ihr Code ist in der Nähe. Die Objekteigenschaften behalten ihre Reihenfolge nicht bei. Wenn Elemente eine Reihenfolge haben sollen, müssen Sie sie in einer 'List' speichern:' var myOrderedObj = Immutable.fromJS ({name: 'thing', orderedProps: [{size: 1}, {weight: 2}] }) '. Das ist jedoch eine seltsame Sache. –

+0

:/Nun, ich denke, ich werde damit etwas anfangen :) Danke Trevor. – Norman

2

fromJS übersetzt Ihre Objekte standardmäßig in lists und maps. Ersteres ist bestellt, aber nicht gekeyed, während letzteres gekeyed, aber nicht bestellt ist, passt also auch nicht zu Ihrem Anwendungsfall.

Was Sie suchen ist ein OrderedMap, die ein Map mit einer zusätzlichen Auftrag Garantie:

import { OrderedMap } from 'immutable'; 
const orderedMap = OrderedMap({key: "value"}); 
+0

Sie, Sir, sind ein Lebensretter! .. –

Verwandte Themen