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

Javascript React/Flux—监控api和更新新数据存储的最佳方法?,javascript,rest,reactjs,reactjs-flux,flux,Javascript,Rest,Reactjs,Reactjs Flux,Flux,我试图弄清楚当api返回更改的数据时如何更新存储。 我的一个组件应该在其他用户向api写入数据时呈现“实时”数据。最好的方法是什么?按时间间隔轮询异步数据 我正在使用ReactJS/AltJS,现在我正在使用jQuery在我的操作中进行异步api调用 谢谢 BookActions.js: getBook(bookId) { $.ajax({ url: '/api/books/' + bookId }) .done((data) => { this.actions.g

我试图弄清楚当api返回更改的数据时如何更新存储。 我的一个组件应该在其他用户向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秒内收到通知,还需要仔细设计后端系统

在你的问题中,我假设几秒钟的延迟是可以忍受的。其中一个简单的解决方案是轮询。根据,您可以在
componentDidMount
中创建一个计时器来定期调用API,并清理
componentWillUnmount
中的所有内容


不要将计时器逻辑放在man组件可能共享的操作中。

您能再解释一下您想做什么吗。您声明在interval上轮询异步数据,但我看到您仅在getBook方法中这样做(也许您在interval上调用它?)。什么样的数据存储在图书数据中?它们经常变化吗?如果不是,那么在componentDidMount上获取数据完全可以。如果它频繁变化,你就应该考虑某种数据推送模型。