2015-12-16 60 views
4

我正在使用react和meteor,我一次無法從服務器獲取數據。組件正在獲取流中的數據,並且組件的渲染函數被多次調用。如何通過反應控制流星數據流?

這是我用來從客戶端內部的服務器獲取帖子與mixin反應組件中的代碼。

getMeteorData() { 
     return { 
      posts: Posts.find({}, {sort: {createdAt: -1}}).fetch() 
     } 
    }, 

截至目前,這讓所有的職位從服務器(只有約20在那裏)

如何從服務器獲取數據一次,因此不會流並多次調用渲染函數?

回答

2

添加額外的檢查,如果數據加載中進行的那樣:

mixins: [ ReactMeteorData ], 
    getMeteorData() { 
    var subscription = Meteor.subscribe('posts'); 

    return { 
     isLoading: !subscription.ready(), 
     posts: Posts.find({}, {sort: {createdAt: -1}}).fetch() 
    }; 
    }, 
    render() { 
    if (this.data.isLoading) { 
     return <div>Loading...</div>; 
    } else { 
     return (
     // now we have data and render once 
    ); 
    } 
    }