2015-01-18 27 views
7

Cách thích hợp để khởi tạo dữ liệu (không đồng bộ) với RefluxJS là gì? Có một cái gì đó tương tự như giải quyết AngularJS ', hoặc thực hiện Flux không có gì để làm với điều này (Các bộ định tuyến nên được xử lý reponsibility này)?Cách thích hợp để khởi tạo dữ liệu

Trả lời

10

Trong thành phần cấp cao nhất của ứng dụng, sử dụng phương thức comoponentWillMount (docs) để kích hoạt hành động tìm nạp dữ liệu. Phương thức này sẽ được gọi khi thành phần ban đầu được hiển thị.

Ví dụ:

// Create an async action, that will request data using a promise 
// Using the recently released (v0.2.2) helpers for async actions 
var actions = Reflux.createActions({ 
    init: {asyncResult: true} 
}); 
actions.init.listenAndPromise(promiseToGetData); 

// Update the store when the init action's promise is completed 
var store = Reflux.createStore({ 
    listenables: actions, 
    onInitCompleted: function (data) { 
     // do stuff 
     this.trigger(data) 
    } 
}); 

var App = React.createClass({ 
    mixins: [Reflux.connect(store)], 
    componentWillMount: function() { 
     // When this component is loaded, fetch initial data 
     actions.init() 
    } 
}); 
+0

Chỉ cần một câu hỏi: Nếu tôi đang sử dụng refluxjs với phản ứng-router, những gì xảy ra nếu lời hứa bị từ chối; Việc gắn kết bị tạm dừng (về mặt kỹ thuật, không có gì xảy ra) hay nó được xử lý thủ công? – srph

+0

Thành phần sẽ vẫn gắn kết, lời kêu gọi hành động là cháy và quên. Nếu lời hứa bị từ chối, cửa hàng sẽ vẫn nhận được kết quả và bạn có thể thêm trình xử lý 'onInitFailed'. Xem https://github.com/spoike/refluxjs#asynchronous-actions để biết thêm về các hành động không đồng bộ. –

+0

Cảm ơn. Nhân tiện, bạn có tham khảo '' 'componentWillMount''' thay vì' '' onComponentWillMount''' không? – srph

-1

trào ngược có một API cho thực này.

Các tài liệu thuộc diện nghèo tại mô tả nó, nhưng Spoike (tác giả trào ngược của) đưa ra một câu trả lời cùng với một mã ví dụ:

https://stackoverflow.com/a/28984512/1775026

+0

Câu hỏi này là về tìm nạp dữ liệu không đồng bộ. Reflux đặt phương thức 'getInitialState' của cửa hàng trên các thành phần React và không nên được sử dụng để tìm nạp dữ liệu một cách không đồng bộ. Ví dụ trong câu trả lời bạn đã liên kết là cho các giá trị tĩnh. Xem React [documentation] chính thức (https://facebook.github.io/react/tips/initial-ajax.html) để biết ví dụ và http://stackoverflow.com/questions/26615307 –

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