0
我'建立一個反應/流星應用。我遇到訂閱問題。當subscriotion.ready()爲false時會顯示一個組件。當它變成真正的組件由數據表所取代,但它需要的準備,並從find()方法的數據之間的幾秒鐘。取(),顯示了一會兒另一個組件。流星訂閱準備
有什麼建議嗎?
感謝
我'建立一個反應/流星應用。我遇到訂閱問題。當subscriotion.ready()爲false時會顯示一個組件。當它變成真正的組件由數據表所取代,但它需要的準備,並從find()方法的數據之間的幾秒鐘。取(),顯示了一會兒另一個組件。流星訂閱準備
有什麼建議嗎?
感謝
如果您正在使用react-meteor-data
你可以在ready
財產subscription
狀態。然後,您可以將此屬性發送到演示組件並相應地進行更新。從包中的文件
的示例代碼段:
import { createContainer } from 'meteor/react-meteor-data';
export default PresenterContainer = createContainer(props => {
// Do all your reactive data access in this method.
// Note that this subscription will get cleaned up when your component is unmounted
const handle = Meteor.subscribe('publication_name');
return {
isReady: ! handle.ready(),
list: CollectionName.find().fetch(),
};
}, PresenterComponent);
說明: 的第一個參數是createContainer
的反應函數,將得到重新運行時其活性投入改變。
的PresenterComponent
組件將收到{的isReady,列表}道具。所以,你可以根據isReady
加成狀態呈現您的組件: 寫您這樣的演示組件的render
方法:
render(){
if(!this.isReady) return <LoadingComponent/>
else if(this.props.list.length() != 0) return <TableComponent/>
else return <NoDataFoundComponent/>
}
您好,感謝..我是做這個差不多,只是我有一個Meteor.autorun所述簽約在我刪除,但準備和查找數據仍然存在之間的延遲。大約1秒鐘,足以顯示「沒有找到記錄」的組件。 –
謝謝,我只是固定它改變由觀看參數「沒有找到記錄」組件,現在它基於準備和counts.get()== 0。現在是加載組件刪除和數據之間的時間,但沒有「找不到記錄」組件的情況下它會好得多。 –
我已經更新了我的答案,如果它可以幫助別忘了給予好評或接受! :) –