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
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.
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"});
Sie, Sir, sind ein Lebensretter! .. –
- 1. Sortieren und Gruppieren eine Immutable.js Liste
- 2. Wie Immutable.JS Funktionen/Accessoren innerhalb React Komponenten zu vermeiden
- 3. So vermeiden Sie das Laden von Daten vom Server bei jedem Sortieren/Paging mit ngtable
- 4. Immutable.js fügen Sie neue Daten
- 5. Sortierung nach alphabetischer Reihenfolge immutable.js
- 6. Immutable.js Map Werte Array
- 7. So vermeiden Sie das Abrunden in NSNumberFormatter
- 8. Vermeiden Sie das Öffnen der Dateiauswahl Popup
- 9. immutable.js: Karte versus Seq
- 10. Vermeiden Sie das Drucken identischer Ausgabe
- 11. Vermeiden Sie das Umgehen der Powershell-Ausführungsrichtlinie
- 12. Vermeiden Sie das Zitieren in CMake add_custom_command
- 13. Immutable.js mergeDeepWith Problem
- 14. Verwenden von Reacts sollteComponentUpdate mit Immutable.js Cursors
- 15. Vermeiden Sie das Herunterladen von Bildern mit Beautifulsoup und urllib.request
- 16. Vermeiden Sie das Rendern teilweise geladener HTML-Seiten mit requirejs
- 17. Flow und Immutable.js Map
- 18. Eine Möglichkeit, immutable.js mit lodash zu verwenden?
- 19. So verhindern Sie das Sortieren der Datenrasteransicht
- 20. Zusätzliche Vermerke für Immutable.js?
- 21. Vermeiden Sie das Klicken auf das vollständige Layout
- 22. Vermeiden Sie instanceof mit Entitäten
- 23. Statische Typprüfung mit immutable.js und Facebook-Fluss
- 24. So sortieren Sie das LDAP-Ergebnis mit der LDAP-Abfrage?
- 25. Kann ich Destrukturierungsaufträge mit immutable.js verwenden?
- 26. Iterieren in Angular 2 + Immutable.js (mit * ngFor)
- 27. Vermeiden Sie Sortieroperator im Indexplan
- 28. immutable.js exportiert keine Karte
- 29. Immutable.js - Lazy Sequence
- 30. Erweitern Immutable.js Typen
ich mit Immutable.List versucht, und ich habe das gleiche Ergebnis, trotzdem danke. Hier ist ein Beispiel [link] (https://jsfiddle.net/normanfx/sdufb9ac/) – Norman
@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. –
:/Nun, ich denke, ich werde damit etwas anfangen :) Danke Trevor. – Norman