Ich habe einen einzigen Zustand in meiner React-Komponente, die die Struktur wie folgt hat . Während der Betriebszeit muss ich mehrere Anforderungen an den Server auslösen, um die Daten anzufordern, um den Zustand zu aktualisieren, und dies muss in dem Zustand aktualisiert werden. Da die Anzahl der Datensatz in der Datenbank ziemlich groß ist, muß ich mehrmalsMultiple-State-Version zusammenführen für React
auslösen Wenn ich wie dies tue
request_data(e) {
['a', 'b'].forEach((k) => {
// do not mutate the state directly
let new_state = _.extend({}, state);
request(params, (err, res) => {
// set result to the new_state
new_state = res;
// update the original state
this.setState(newState);
})
});
}
innerhalb des Rückrufs, wird die zweite Anforderung die Daten der ersten hat fordern Sie den Moment an, in dem es angefordert wird, und aktualisieren Sie den Ursprungszustand mit dem leeren Wert für den ersten Zweig der Zustandsstruktur.
Eine einfache Lösung ist das Aktualisieren des Ursprungszustands direkt, aber ich denke nicht, dass es eine gute Idee ist. Ich plane, redux
später zu integrieren, aber in diesem Moment, da die aktuelle Codebasis ziemlich groß ist, ist die schrittweise Migration besser. Allerdings möchte ich den Ursprungszustand nicht direkt ändern, da es nicht der redux
Weg ist. Irgendwelche Vorschläge, um dieses Problem zu überwinden?
Machst du innerhalb einer React Component Lifecycle-Methode? Wo lebt dieser Code? –
Ich aktualisiere meine App von Blaze zu React in diesem Moment und ein Teil davon noch in Blaze. Der eigentliche Code ist ziemlich kompliziert involvieren die 'ReactiveVar' von Meteor, aber davon ausgehen, dass dieser Code innerhalb einer React Component ist. Ich sehe nicht, dass es anders ist, da dies das allgemeine Problem ist, mehrere Kopien des Zustands während der Rückrufe zu verschmelzen –