我已经开始学习 Facebook 的 Flux 架构。我正在尝试制作一个简单的登录屏幕。我已按照通量聊天示例应用程序创建屏幕。我在 ServerActionCreator 和 WebAPIUtils 之间存在循环依赖问题。请看下面的代码。
ServerActionCreator.js
var AppDispatcher = require('../dispatcher/AppDispatcher');
var Constants = require('../constants/Constants');
var WebAPIUtils = require('../utils/WebAPIUtils');
var ActionTypes = Constants.ActionTypes;
module.exports = {
receiveLoginStatus: function(status){
AppDispatcher.handleServerAction({
type: ActionTypes.RECEIVE_LOGIN_STATUS,
status: status
});
},
loginSubmit: function(data){
WebAPIUtils.login(data);
}
}
WebAPIUtils.js
var ServerActionCreator = require('../actions/ServerActionCreator');
module.exports = {
login: function (data) {
//Mock server API call
var status = JSON.parse('{"status":"success"}');
ServerActionCreator.receiveLoginStatus(status);
}
};
如您所见,ServerActionCreator 依赖于 WebAPIUtils,而 WebAPIUtils 依赖于 ServerActionCreator。
我认为,由于循环依赖,WebAPIUtils 成为一个空对象,并且在调用 ServerActionCreator 中的 loginSubmit 函数时出现“未定义不是函数”错误。截图如下。
如何处理这种情况?或者有没有其他方法?任何帮助深表感谢。