Reflux listenAndPromise 多次做 action

Reflux listenAndPromise do action many times

我有一些反流动作,这是我的动作

var BeritaActions = Reflux.createActions({
  'getListBerita': {
    children: [
      'actions', 'completed', 'failed'
    ]
  },
  'getBerita': {
    children: [
      'actions', 'completed', 'failed'
    ]
  },
});

BeritaActions.getListBerita.listen(function(param)
{
  return BeritaUtil.listBerita(param)
    .on('error', this.failed)
    .end(this.completed);
});

BeritaActions.getBerita.listenAndPromise(function(id)
{
  return BeritaUtil.read(id)
    .on('error', this.failed)
    .end(this.completed);
});

这是我的店铺,听听动作

Reflux.createStore({
  onprogress: false,
  type: null,
  init()
  {
    this.listenTo(BeritaAct.getListBerita.completed, this.getInitData);
    this.listenTo(BeritaAct.getListBerita.failed, this.getInitErrorData);
  },
  setType(type)
  {
    return this.type = type;
  },
  getCurrentData()
  {
    return _data;
  },
  getInitData(field)
  {
    console.log(field)
    let data = JSON.parse(field.text);
    if(data.meta.code == 200)
    {
      if(typeof _data[this.type] == 'undefined')//first open
      {
        //console.log('first')
        _data[this.type] = data.data;
      }else//on load more = merging data
      {
        //console.log(_data[this.type])
        _data[this.type] = update(_data[this.type], {$merge: data.data}); 
      }

      this.trigger(_data);

    }else
    {
      Toas.error({title:data.meta.message, content:''});
    }
  },...

所以我在我的组件中执行操作

React.createClass({
  getInitialState()
  {
    if(Progress.isAjax())
    {
      Progress.onProgress(true);
      BeritaStore.setType('list');
      BeritaAct.getListBerita({});
    }else
    {
      //not ajax
    }
    return {
      showloader: {display: 'none'},
      shownext: {display: 'block'}
    };
  },..

store 可以很好地监听动作并且可以 return 在我的 React 组件上。但是当我检查网络检查时,我多次收到操作请求,我不知道发生了什么?

好的,我解决了这个问题,让我们去 getInitData 函数

getInitData(bind, field)
{
    console.log(field)
}

我在getInitData函数上添加了参数,所以在我console.log()第二个参数之后,我得到了数据