我试图弄清楚当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);
答案 0 :(得分:2)
首先,你必须定义什么是“生活”和“生活”。数据。用户将一些数据写入服务器后,您需要等多久才知道有新数据?如果您希望在1秒内收到通知,还需要仔细设计后端系统。
在你的问题中,我认为几秒钟的延迟是可以容忍的。其中一个简单的解决方案是轮询。根据{{3}},您可以在var oTable = $('#mytable').dataTable({
"bPaginate": false
}).makeEditable({
sUpdateURL: "UpdateData.php",
sSelectedRowClass: "row-selected-custom"
});
中创建一个计时器,以定期调用API,并清除componentDidMount
中的所有内容。
不要将计时器逻辑放入人员组件可能共享的动作中。