React.addons.batchedUpdates API的目的是什么?

时间:2014-11-16 04:27:34

标签: javascript reactjs

React v0.12发布公告包括以下内容:

  

新功能:

* React.addons.batchedUpdates added to API for hooking into update cycle

但是我找不到此API的任何文档。它的目的是什么?

具体而言,它是否有可能等同于Ember.run()

2 个答案:

答案 0 :(得分:7)

在响应onClick之类的合成事件时,组件状态更改会被批处理,因此对同一组件的this.setState的大量调用只会导致一次渲染。

如果要更改状态以响应其他异步回调(例如AJAX或setTimeout),则每次调用this.setState都将导致渲染。您可以将工作包装在batchedUpdates(..)中以避免这种情况。

var React = require('react/addons');
var batchedUpdates = React.addons.batchedUpdates;
var request = require('superagent'); // AJAX lib

var req = request('GET', ...).end(function(err, res) {
    // invoked when AJAX call is done
    batchedUpdates(function(){
        .. all setState calls are batched and only one render is done ...
    })
});

答案 1 :(得分:0)

默认的批量更新策略非常适合普通网站。有时你有额外的要求,需要偏离它。

这个公开的最初原因是requestAnimationFrame批处理策略,这对于需要经常在许多地方更新的游戏和网站更好。

它只是解决边缘案例问题的可扩展性点。