【发布时间】:2014-12-14 14:37:49
【问题描述】:
我正在开发简单的 Flux+Reactjs 应用程序,在我的商店里有:
var ProfileStore = merge(EventEmitter.prototype, {
/**
* Get the entire collection of Profiles.
* @return {object}
*/
getAll: function() {
//ajax call to mongolab
var url = "https://api.mongolab.com/api/1/databases/bar/collections/profiles?apiKey=foo-"
var jsPromise = Promise.resolve($.ajax(url));
jsPromise.then(function(response) {
return response;
});
},
emitChange: function() {
this.emit(CHANGE_EVENT);
},
/**
* @param {function} callback
*/
addChangeListener: function(callback) {
this.on(CHANGE_EVENT, callback);
},
/**
* @param {function} callback
*/
removeChangeListener: function(callback) {
this.removeListener(CHANGE_EVENT, callback);
}
});
然后在我的组件中:
var ProfileApp = React.createClass({
getInitialState: function() {
return {
allProfiles: ProfileStore.getAll()
};
},
});
当我在 getAll() 函数中使用 console.log() 时,我可以看到结果,但没有任何东西传递给我的组件,是否有任何关于如何解决此问题的指针?
【问题讨论】:
-
在您的商店中进行异步调用并不总是最好的解决方案,因为正如您所注意到的那样,它使您更难推断您的状态发生了什么。我建议阅读以下文章,该文章描述了使用通量处理异步请求的更好方法:code-experience.com/…
标签: reactjs reactjs-flux