2014-11-16 15 views

risposta

0

La strategia di aggiornamento in batch predefinita è ideale per il tuo sito web medio. A volte hai requisiti extra e devi scostarti da quello.

Il motivo iniziale che è stato reso pubblico è per una strategia di batchAnimationFrame richiesta, che è migliore per i giochi e i siti che devono essere aggiornati spesso e in molti luoghi.

È solo un punto di estensibilità per risolvere i problemi relativi ai casi limite.

+0

Include un equivalente di Ember.run()? vale a dire. un modo per aggiornare i batch al di fuori del normale ciclo degli eventi di React? –

+0

React ha un modo predefinito per gli aggiornamenti batch che iirc usa setTimeout. Ciò consente di specificare un'alternativa o di ottenere dati, analisi, ecc. Senza saperne di più su Ember.run, direi che è simile. – FakeRainBrigand

7

Quando si risponde a eventi sintetici come onClick e così via, le modifiche allo stato dei componenti vengono raggruppate in modo tale che molte chiamate a this.setState per lo stesso componente comporteranno un solo rendering.

Se si modifica lo stato in risposta ad un altro richiamo asincrono (ad esempio AJAX o setTimeout), ogni chiamata a this.setState comporterà un rendering. Puoi avvolgere il tuo lavoro in batchUpdates (..) per evitare questo.

var React = require('react/addons'); 
var batchedUpdates = React.addons.batchedUpdates; 
var request = require('superagent'); // AJAX lib 

var req = request('GET', ...).end(function(err, res) { 
    // invoked when AJAX call is done 
    batchedUpdates(function(){ 
     .. all setState calls are batched and only one render is done ... 
    }) 
}); 
+0

Grazie per questo. Accettavo eventi di tastiera da Mousetrap.js e mi chiedevo perché il cambio di stato non funzionasse. Questo ha risposto alla mia domanda e fornito la soluzione. – Raman