ho codifica miei ReactJS richieste AJAX come questo:emissione richiesta AJAX nel callback di setState()
this.setState({
isLoading: true,
results: null
});
$.get(ajaxUrl, function(results) {
this.setState({
isLoading: false,
results: results
});
}.bind(this));
Questo è solo un esempio, manca la gestione degli errori, la limitazione, le richieste di cancellazione, ecc Ma l'essenza è lì. Fondamentalmente chiedo di impostare lo stato e quindi la richiesta di emissione.
Guardando qualche altro codice su GitHub, però, ho notato che alcune persone scrivono le loro chiamate AJAX nella richiamata setState:
this.setState({
isLoading: true,
results: null
}, function() {
$.get(ajaxUrl, function(results) {
this.setState({
isLoading: false,
results: results
});
}.bind(this));
}.bind(this));
C'è una ragione valida per farlo? The docs say:
Non vi è alcuna garanzia di funzionamento sincrono delle chiamate su setState e le chiamate possono essere raggruppate per guadagni di prestazioni.
Quindi non vi è alcuna garanzia che setState muti lo stato prima di tornare, ma non vedo alcuna menzione che diversi setState potrebbero eseguire fuori servizio. Quindi il peggio che potrebbe accadere è che lo stato di "caricamento" non viene mai reso. È questo che lo stile di quest'ultimo sta cercando di risolvere? C'è qualche altro rischio che non riesco a vedere?