I eine Komponentenstruktur habe wie dieseReactJS gleichzeitig SetState race condition
<A>
<B>
<C/>
<C/>
</B>
<D>
<E/>
<E/>
</D>
</A>
Idee ist, dass Aktionen auf Komponenten im Block E von einer Funktion der Komponente A in dem Zustand von A und als weitergegeben zu B verarbeitet werden, und C als Requisiten. Ich weiß, dass es besser wäre, Flux, pubsub-js oder ein anderes Store-Nachrichtensystem zu verwenden, aber hoffe, wenn jemand erklären kann, warum die richtige Lösung meines Wissens nicht funktioniert.
diese Funktion der Komponente A Aufruf simalteneously von mehreren Instanzen der Komponente E führt mit nur einer Änderung im Zustand Zustand zu laufen (statt jede Anruffunktion eine Änderung bereitstellt)
updateState(value,index){
this.setState(update(this.state, {
a: {
[index]: {
b: {
$set: value
}
}
}
})
);
}
Funktion Update hier kommt von
import update from 'react/lib/update';
Bad-Lösung, die gegen ReactJS reccomended Praktiken geht, funktioniert aber gut:
updateState(value,index){
this.state.a[index].b=value;
this.forceUpdate();
);
}
Meine Frage ist:
Ist es ein Fehler, dass mehrere simaltene setState eine Race-Bedingung aufruft, oder mache ich etwas falsch, ohne es zu verstehen?
setState gemeint ist asynchron zu sein, und wird durch Reagieren chargiert, wann immer möglich, die Leistung – user120242
Sie können will auch einen Rückruf http://stackoverflow.com/questions/25172850/reactjs-this-setstate-out-of-sync-with-this-state-myvar –