在React + Flux中返回从服务到组件的回调

时间:2016-07-02 08:47:29

标签: javascript reactjs flux

对使用ReactJS正确实施Flux有疑问。

假设我有一个联系表单,在提交时调用我的ContactService,传递表单信息。

ContactService.js

import request from 'superagent';
import when from 'when';
import ContactActions from '../actions/';

let constants = require('../constants.js');
const BASE_URL = constants.default.BASE_URL;

class ContactService {

  submitFormData(formData) {
    request
    .get(BASE_URL + 'api/v1/contact') 
    .end(function(err, res){
      if (!err && res){
        // This is where my question is
      } else {
        console.log("There has been an error submitting contact form to API");
        console.log(err)
        // This is also kind of where my question is
      }
    })
  }
}

export default new ContactService();

现在,我想通知我的组件提交是否成功。我的问题是,最好的方法是什么?如果我从API检索数据,或者需要更改组件的状态,我会通过将响应传递给Action并将数据保存在组件可以订阅的Store中来处理它。

但在这里我只需要一个回复,以便我可以显示确认或错误消息。这还应该通过动作和商店传递吗?或者是否有更好的方法,比如将一个promise直接返回给组件,以便它可以运行一个回调函数而不涉及商店?

2 个答案:

答案 0 :(得分:0)

总是使用存储/磁通动作来处理这类事情。

从Promise处理程序中调度data_receiveddata_error。它更具语义性,更易于调试,并且使用与其他所有数据相同的数据流(操作 - >存储 - >视图)。

答案 1 :(得分:0)

在通量架构中检索的所有数据都必须通过存储和操作来完成