React / Flux - 监控api和更新新数据存储的最佳方法?

时间:2015-08-08 07:31:51

标签: javascript rest reactjs reactjs-flux flux

我试图弄清楚当api返回更改的数据时如何更新商店。 我的一个组件应该呈现" live"其他用户向api写入数据时的数据。什么是最好的方法?间隔轮询异步数据?

我正在使用ReactJS / AltJS,现在我正在使用jQuery在我的操作中进行异步api调用。

谢谢!

BookActions.js:

getBook(bookId) {
  $.ajax({ url: '/api/books/' + bookId })
    .done((data) => {
      this.actions.getBookSuccess(data);
    })
    .fail((jqXhr) => {
      this.actions.getBookFail(jqXhr);
    });
}

BookStore.js

import alt from '../alt';
import BookActions from '../actions/BookActions';

class BookStore {
  constructor() {
    this.bindActions(BookActions);
    this.books = [];
  }

  onGetBookSuccess(data) {
    this.books = data;
  }

  onGetBookFail(errorMessage) {
    toastr.error(errorMessage);
  }

}

export default alt.createStore(BookStore);

1 个答案:

答案 0 :(得分:2)

首先,你必须定义什么是“生活”和“生活”。数据。用户将一些数据写入服务器后,您需要等多久才知道有新数据?如果您希望在1秒内收到通知,还需要仔细设计后端系统。

在你的问题中,我认为几秒钟的延迟是可以容忍的。其中一个简单的解决方案是轮询。根据{{​​3}},您可以在var oTable = $('#mytable').dataTable({ "bPaginate": false }).makeEditable({ sUpdateURL: "UpdateData.php", sSelectedRowClass: "row-selected-custom" }); 中创建一个计时器,以定期调用API,并清除componentDidMount中的所有内容。

不要将计时器逻辑放入人员组件可能共享的动作中。