我已經訂閱了流星的集合,並傳遞頁碼以允許分頁。 limit參數設置爲15,因此不應該返回超過15個文檔,但是當我切換頁碼時,訂閱會連續返回3個連續15次,30次和15次文檔。只有最後一個是正確的15.流星訂閱發送大量數據
因此,當表格數據增長到30行然後再次回到15時,UI會看到「閃存」。
我使用的UI反應並含有組分像這樣將數據傳遞作爲道具到呈現組件:
export default createContainer(props => {
// Get collection name from router/url and grab mongo collection
let collectionName = props.routeParams.collectionId;
let Collection = CollectionData(collectionName).collection;
// Get paged results based on URL query page
Meteor.subscribe(collectionName, props.location.query.page || 1);
return {
items: Collection.find({}, {sort: {createdAt: -1}}).fetch(),
total: Collection.find({}).count()
};
}, Collection);
在呈現組件我更新路由器歷史狀態,改變頁面數像?page = 1。這會導致重新呈現,它將更新「props.location.query.page」的值,以允許訂閱數據發生更改。我不確定是否有更好的方法來改變分頁值。
的發佈代碼如下所示:
// Publish data
if(Meteor.isServer) {
Meteor.publish(mongoCollectionName, function(page){
if(page) {
let pageSize = 15;
page = parseInt(page)-1;
if(page < 0) page = 0;
return collection.find({}, {limit: pageSize, skip: page*pageSize});
} else {
return collection.find({});
}
});
}
從我可以看到它似乎我的組件接收數據之前流星加盟15兩個數組,以使30個文檔的陣列,在某些時候。
我認爲這隻適用於大火?這怎麼能用反應來實現呢? – wazzaday