react.js - 在requestAnimationFrame上呈现

时间:2015-01-10 14:44:53

标签: javascript render reactjs requestanimationframe react-jsx

我想在我的应用程序中试验一些React组件的性能。我知道ClojureScript的Om框架(https://github.com/swannodette/om)使用了一些优化技术,比如使用immutables来实现shouldComponentUpdate()并在requestAnimationFrame上进行渲染。

是否存在可以引入基于requestAnimationFrame的渲染的简单JavaScript mixin?

1 个答案:

答案 0 :(得分:8)

如果您使用Browserifywebpack之类的东西从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);