2017-12-16 2 views
1

Ich habe ein Problem und ich würde Ihre Hilfe lieben! Ich verfolge eine Autofahrt mit einer Bibliothek (https://github.com/transistorsoft/react-native-background-geolocation) und speichere jede Sekunde den aktuellen Positionsstatus im Redux-Zustand. Dies macht eine wirklich große Menge von Objekten (Tausende) mit Daten wie Koordinaten, Geschwindigkeit, Höhe, etc ... und das macht ein Problem mit der Leistung (langsames Tracking der aktuellen Position) ... Ich muss die Koordinaten in der Karte in der Reihenfolge anzeigen um die ganze Fahrt zu wissen, während er drin ist ... Denkst du, ich muss es außerhalb des Redux-Status speichern?Redux-Leistung in langen Koordinatenfeldern. Ich muss alle Koordinaten auf einem riesigen Array bekommen, um in einer Karte zu zeigen

Antwort

0

Es wäre besser, es außerhalb des Redux zu speichern, aber Sie können auch die Daten mit Ihrem Backend synchronisieren und die synchronisierten Daten von Redux entfernen. Aber wenn Sie eine offline-erste Anwendung haben, können Sie lokale Datenbanken verwenden.

Zwei gute Möglichkeiten:

SQLite: https://github.com/andpor/react-native-sqlite-storage

und

Couchbase Lite: https://github.com/couchbaselabs/react-native-couchbase-lite

Beide Ihnen Optionen zu fragen geben, die für die Visualisierung Abfrage gut wäre.

1

Die Frage ist, wie Sie heute mit den Daten umgehen. Wenn Sie Unveränderlichkeit verwenden (als redux expect), würde ich vorschlagen, dass Sie die Immutable.js Bibliothek oder ähnliches verwenden würden. Andernfalls bedeutet jede Änderung, dass Sie das gesamte Array ändern müssen. Immutable.js ist auf diese Weise intelligent, da es Ihnen erlaubt, es zu ändern, ohne dass es sich tatsächlich mehr verändert als notwendig (hinter den Kulissen). Stellen Sie sicher, dass Sie pure components erstellen und dass die Komponente ihre Koordinaten direkt aus dem Speicher liest und nicht als übergebene Eigenschaft vom übergeordneten Element (um unnötige Neuzeichnungen zu vermeiden).

Ein anderer Vorschlag wäre, jedes Trip-Segment zu einer reaktiven Komponente zu machen, die nur zwei Datenpunkte in Ihrem Set kennt. Dann würde diese Reaktionskomponente nur aktualisiert werden, wenn sich die Koordinaten ändern (was niemals der Fall sein wird, da keiner der Datenpunkte später geändert werden soll).

Möglicherweise gibt es keine "perfekte Antwort" auf Ihre Frage, nicht ohne Ihren Code zu sehen. Mit den von Ihnen bereitgestellten Informationen denke ich, dass die obigen Vorschläge Ihnen einige Optionen zur Verbesserung der Leistung geben könnten.

+0

Sehr gute Hinweise. –

+0

Ich glaube, die Verwendung von Immutable.Js in redux ist ein Optimize Way. Guter Vorschlag . https://redux.js.org/docs/recipes/UsingImmutableJS.html –

+0

Super! Vielen Dank :) – gianpieroco

Verwandte Themen