javascript - react.js - 在 requestAnimationFrame 上渲染

标签 javascript render requestanimationframe reactjs

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

是否有纯 JavaScript 混合可以引入基于 requestAnimationFrame 的渲染?

最佳答案

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

关于javascript - react.js - 在 requestAnimationFrame 上渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27877431/

相关文章:

Javascript "Syntax error"/"Object Expected"/'' style.cssText' 为 null 或不是对象”

javascript - 将导航包裹在子导航中

Javascript从innerHTML中删除每行开头的空格

javascript - requestAnimationFrame 的触发频率远高于 60 fps

javascript - requestAnimationFrame javascript警报增量从1跳到9或13

javascript - 防止多次提交文本区域数据

javascript - 将传递函数 react 给子父对象而不是重新渲染

symfony - Symfony 命令中的 RenderView 使用

opengl - 创建视频 com 渲染的 OpenGL 帧

javascript - 什么时候使用requestAnimationFrame?