ho una struttura componente simileReactJS concomitante SetState race condition
<A>
<B>
<C/>
<C/>
</B>
<D>
<E/>
<E/>
</D>
</A>
idea è che le azioni sui componenti a blocco E vengono elaborati da una funzione di componente A allo stato di A e di passate al B e C come oggetti di scena. Lo so, il modo migliore era usare Flux, pubsub-js o altri sistemi di messaggi del negozio, ma spero che qualcuno possa spiegare perché la soluzione corretta non sia efficace.
chiamata a questa funzione di componente A simalteneously da più istanze del componente E porta a correre condizioni con un solo cambiamento di stato (al posto di ogni chiamata di funzione che fornisce un cambiamento)
updateState(value,index){
this.setState(update(this.state, {
a: {
[index]: {
b: {
$set: value
}
}
}
})
);
}
aggiornamento Funzione ecco che arriva da
import update from 'react/lib/update';
soluzione inappropriato che va contro ReactJS consigliato pratiche, ma funziona bene:
updateState(value,index){
this.state.a[index].b=value;
this.forceUpdate();
);
}
La mia domanda è:
È un bug, che più setState simalteneous invoca una condizione di competizione, o sto facendo qualcosa di sbagliato senza comprenderlo?
setState è destinata ad essere asincrono, ed è dosato da React quando possibile per le prestazioni – user120242
Si può Voglio anche inviare una richiamata http://stackoverflow.com/questions/25172850/reactjs-this-setstate-out-of-sync-with-this-state-myvar –