Khi trả lời các sự kiện tổng hợp như onClick, v.v., các thay đổi trạng thái thành phần được nhóm theo quá nhiều cuộc gọi đến this.setState cho cùng một thành phần sẽ chỉ dẫn đến kết quả hiển thị.
Nếu bạn đang thay đổi trạng thái để trả lời một số cuộc gọi lại không đồng bộ khác (ví dụ: AJAX hoặc setTimeout) thì mọi cuộc gọi đến this.setState sẽ dẫn đến kết xuất. Bạn có thể bọc công việc của bạn trong batchedUpdates (..) để tránh điều này.
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 ...
})
});
Nguồn
2015-05-29 13:11:14
Có bao gồm tương đương với Ember.run() không? I E. một cách để cập nhật hàng loạt bên ngoài vòng lặp sự kiện bình thường của React? –
React có một cách mặc định để cập nhật hàng loạt mà iirc sử dụng setTimeout. Điều này cho phép bạn chỉ định một giải pháp thay thế hoặc nhận dữ liệu, phân tích, v.v. Không biết thêm về Ember.run, tôi đoán nó tương tự. – FakeRainBrigand