2014-11-16 20 views
5

Việc công bố phát hành React v0.12 bao gồm những điều sau đây:Mục đích của API React.addons.batchedUpdates là gì?

Tính năng mới:

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

Tuy nhiên tôi không thể tìm thấy bất kỳ tài liệu cho API này. Mục đích của nó là gì?

Cụ thể, bất kỳ cơ hội nào nó có tương đương với Ember.run()?

Trả lời

0

Chiến lược cập nhật theo lô mặc định thật tuyệt vời cho trang web trung bình của bạn. Đôi khi bạn có thêm yêu cầu và cần phải đi chệch khỏi điều đó.

Lý do ban đầu được đưa ra công khai là dành cho chiến lược tạo chuỗi yêu cầuAnimationFrame, tốt hơn cho các trò chơi và trang web cần cập nhật thường xuyên và ở nhiều nơi.

Nó chỉ là một điểm mở rộng để giải quyết các vấn đề về trường hợp cạnh.

+0

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? –

+0

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

7

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 ... 
    }) 
}); 
+0

Cảm ơn bạn vì điều này. Tôi đã chấp nhận các sự kiện bàn phím từ Mousetrap.js và đã tự hỏi tại sao việc thay đổi trạng thái thay đổi trạng thái không hoạt động. Điều này đã trả lời câu hỏi của tôi và cung cấp giải pháp. – Raman

Các vấn đề liên quan