Ich arbeite mit Echtzeit-Finanzdaten wie Aktien und Edelmetallpreisen. Ich treffe alle paar Sekunden eine API, um den aktuellen Preis für ein bestimmtes Asset abzurufen und den Preis im Status zu speichern. Allerdings habe ich den Zustand immer mit einem Array oder Array von Objekten aktualisiert, aber diese Daten sind nur eine Zeichenfolge. Wenn die letzte GET-Anfrage einen anderen Wert als den aktuell eingestellten zurückgibt, überschreiben Sie den Wert.Korrekter Weg zum Setzen vonState in Reagieren, wenn Element im Status keine Sammlung ist
Ich frage mich nur, welche Best Practices für die Aktualisierung einer einfachen Zeichenfolge im Zustand sind?
mein Zustand Konstruktor:
this.state = {
goldPrice: '',
items: {}
}
Meine API-Anfrage:
fetchGoldPrice() {
jQuery.ajax({
method: 'GET',
headers: {'Access-Control-Allow-Origin': '*'},
url: Constants.API_URL,
success: (gold) => {
this.updateGoldPrice(gold.gold_bid_usd_toz);
}
});
}
Wenn erfolgreich die Anrufe updateGoldPrice holen und geht im Preis, die zurückgegeben wurde.
updateGoldPrice(goldPrice) {
this.setState({ goldPrice: goldPrice });
}
Und dann prüfe ich den Preis alle 30 Sekunden:
componentDidMount() {
this.fetchGoldPrice();
this.timer = setInterval(
() => this.fetchGoldPrice(), 30000);
}
Ich bin nur neugierig, ob dies eine Ordnung Weg, dies zu tun. Weil alles, was ich so gelesen, so etwas zu tun:
addItem(item) {
const items = {...this.state.items};
items[item] = item;
this.setState({ items: items });
}
Aber ich bin zu speichern nicht alle Preise in einem Array, ich will nur den einzigen aktuellen Preis.
Vielen Dank.