2015-01-10 15 views
8

Ich möchte mit der Leistung einiger React-Komponenten in meiner App experimentieren. Ich weiß, dass ClojureScript Om Framework (https://github.com/swannodette/om) einige Optimierungstechniken wie die Verwendung von immutables mit Implementierung shouldComponentUpdate() und Rendering auf requestAnimationFrame Änderung verwendet.react.js - Render auf AnfrageAnimationFrame

Gibt es einen einfachen JavaScript-Mix, der das Rendering basierend auf requestAnimationFrame einleiten könnte?

Antwort

8

Dies ist möglich, wenn Sie etwas wie Browserify oder webpack verwenden, um React aus einer CommonJS-Umgebung zu erstellen oder anderweitig eine benutzerdefinierte Build von React zu erstellen. Das heißt, Sie können nicht dies tun, wenn Sie nur die herunterladbare, vorgefertigte React verwenden.

Check out Pete Hunt react-raf-batching project für eine umfassendere Lösung (einschließlich rAF polyfills), aber hier ist ein minimales Beispiel diese Funktion zu erhalten:

var ReactUpdates = require("react/lib/ReactUpdates"); 

var rafBatchingStrategy = { 
    isBatchingUpdates: true, 
    batchedUpdates: function(callback, param) { 
    callback(param); 
    } 
}; 

var tick = function() { 
    ReactUpdates.flushBatchedUpdates(); 
    requestAnimationFrame(tick); 
}; 

requestAnimationFrame(tick); 

ReactUpdates.injection.injectBatchingStrategy(rafBatchingStrategy); 
+3

Hinweis gibt es ein paar (lösbaren) Eckfällen Sie vielleicht zu Handle: https://github.com/petejunt/reac-raf-batching/issues/8 –

+0

Danke, sehr informativ! – Kosmetika

+1

Zum Schreiben dieses Kommentars benötigt 'npm install reactive-raf-batching' einen Peer von react 0.9 und die aktuelle Version ist 0.14.5, also ist es keine schnelle Installation mehr. Ich habe es nicht versucht, wenn es nur kleinere Verbesserungen oder etwas mehr beteiligt benötigt. –