我想在我的应用程序中试验一些React组件的性能。我知道ClojureScript的Om框架(https://github.com/swannodette/om)使用了一些优化技术,比如使用immutables来实现shouldComponentUpdate()
并在requestAnimationFrame
上进行渲染。
是否存在可以引入基于requestAnimationFrame
的渲染的简单JavaScript mixin?
答案 0 :(得分:8)
如果您使用Browserify或webpack之类的东西从CommonJS环境构建React,或者生成React的自定义构建,则可以这样做。也就是说,如果你只是使用可下载的,预先构建的React,就不能这样做。
查看Pete Hunt的react-raf-batching project以获得更全面的解决方案(包括rAF polyfills),但这是一个最小的例子来实现这一点:
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);