react.js - 在 requestAnimationFrame 上渲染

react.js - Render on requestAnimationFrame

我想在我的应用程序中试验一些 React 组件的性能。我知道 ClojureScript 的 Om 框架 (https://github.com/swannodette/om) 使用了一些优化技术,例如使用不可变实现 shouldComponentUpdate() 并在 requestAnimationFrame 更改时呈现。

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

如果您使用类似 Browserify or 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);