【问题标题】:Async requests with data from store来自存储的数据的异步请求
【发布时间】:2015-09-07 06:41:07
【问题描述】:

我刚开始在 webpack 中使用回流js/react。我真的很喜欢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 文件?

奇怪的是,如果我在service 文件中执行var Store = require('stores/ResumeStore');,它的值是object {},这只有在我将商店包含在服务中时才会发生,我认为它与无尽有关循环要求或类似的东西。 (Store需要Action,Action需要Service,Service需要Store)

【问题讨论】:

    标签: javascript asynchronous reactjs reactjs-flux refluxjs


    【解决方案1】:

    为什么不直接将resume作为参数添加到ResumeService的save方法中呢?

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

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

    【讨论】:

      猜你喜欢
      • 2020-10-25
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多