I mają strukturę składników jak toReactJS współbieżne setState wyścigu
<A>
<B>
<C/>
<C/>
</B>
<D>
<E/>
<E/>
</D>
</A>
Chodzi o to, że działania na składniki w bloku E są przetwarzane przez funkcję składnika A do stanu A, a nie przekazywane do B i C jako rekwizyty. Wiem, że lepszym sposobem było użycie Flux, pubsub-js lub innego systemu Store-message, ale mam nadzieję, że ktoś może wyjaśnić, dlaczego nie działa poprawne rozwiązanie.
Wywołanie tej funkcji składnika A simalteneously z wielu wystąpień komponentu E prowadzi do wyścigu stan z tylko jedną zmianą stanu (zamiast każdego wywołania funkcji przewidującej zmianę)
updateState(value,index){
this.setState(update(this.state, {
a: {
[index]: {
b: {
$set: value
}
}
}
})
);
}
aktualizacji funkcji tutaj pochodzi z
import update from 'react/lib/update';
Bad rozwiązanie, które jest sprzeczne ReactJS poleciła praktyk, ale działa dobrze:
updateState(value,index){
this.state.a[index].b=value;
this.forceUpdate();
);
}
Moje pytanie brzmi:
Czy to błąd, że wiele simalteneous setState wywołuje stan wyścigu, czy robię coś nie tak, nie rozumiejąc go?
setstate rozumie się asynchroniczny i jest dozowany przez React gdy jest to możliwe do wykonania – user120242
Użytkownik może również chcesz wysłać wywołanie zwrotne http://stackoverflow.com/questions/25172850/reactjs-this-setstate-out-of-sync-with-this-state-myvar –