0

我刚开始使用回流js/react 和 webpack。我真的很喜欢listenAndPromise异步模式,但是我遇到了一个问题。我得到以下代码:

行动:

var ResumeService = require('services/ResumeService');
var ResumeActions = Reflux.createActions({
    'save': {
        asyncResult: true
    }
});
ResumeActions.save.listenAndPromise(ResumeService.save);

简历服务:

var http = require('utils/http');
var ENDPOINT = '/resumes/';
module.exports = {
    save: function() {
        return http.post(ENDPOINT + 'save', {
            resume: ??????????
        });
    },
}

和部分商店:

var RendererActions = require('actions/RendererActions');
var ResumeStore = Reflux.createStore({
    listenables: [ResumeActions],
    resume: Immutable.fromJS(ResumeExample),  //nested object

    onSaveCompleted: function(id) {
        .....
    },

    onSaveFailed: function() {
        ....
    }
    ...
});

因此,当用户进行更改时,商店中的 resume 变量就会更新。现在用户想要保存更改,他点击了一个触发按钮Action.save()。我的问题来了:如何将resume变量从商店传递到service上面的文件?

奇怪的是,如果我var Store = require('stores/ResumeStore');service文件中执行此操作,它具有 value object {},只有当我将 store 包含在服务中时才会发生这种情况,我认为它与无限循环要求或类似的事情有关。(Store 需要 Action,Action 需要 Service,Service 需要 Store)

4

1 回答 1

0

为什么不直接在 ResumeService 的 save 方法中添加简历作为参数呢?

module.exports = {
    save: function(resume) {
        return http.post(ENDPOINT + 'save', {
            resume: resume
        });
    },
}

然后ResumeActions.save.listenAndPromise(ResumeService.save);应该工作。listenAndPromise 只是将操作负载传递给它的回调参数。

于 2015-07-02T09:18:40.457 回答