Javascript React/Flux—监控api和更新新数据存储的最佳方法?
我试图弄清楚当api返回更改的数据时如何更新存储。 我的一个组件应该在其他用户向api写入数据时呈现“实时”数据。最好的方法是什么?按时间间隔轮询异步数据 我正在使用ReactJS/AltJS,现在我正在使用jQuery在我的操作中进行异步api调用 谢谢 BookActions.js: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
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上获取数据完全可以。如果它频繁变化,你就应该考虑某种数据推送模型。